Não há dúvida de que application/json
é o melhor MIME tipo para uma resposta JSON.
Mas tive alguma experiência em que tive que usar application/x-javascript
devido a alguns problemas de compactação. Meu ambiente de hospedagem é uma hospedagem compartilhada com o GoDaddy . Eles não me permitem alterar as configurações do servidor. Eu adicionei o seguinte código ao meu web.config
arquivo para compactar respostas.
<httpCompression>
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
Ao usar isso, as páginas .aspx foram compactadas com g-zip, mas as respostas JSON não. Eu adicionei
<add mimeType="application/json" enabled="true"/>
nas seções de tipos estático e dinâmico. Mas isso não compacta as respostas JSON.
Depois disso, removi esse tipo recém-adicionado e adicionei
<add mimeType="application/x-javascript" enabled="true"/>
nas seções de tipos estático e dinâmico e alterou o tipo de resposta em
.ashx (manipulador assíncrono) para
application/x-javascript
E agora descobri que minhas respostas JSON foram compactadas com g-zip. Então, eu pessoalmente recomendo usar
application/x-javascript
somente se você deseja compactar suas respostas JSON em um ambiente de hospedagem compartilhado . Como na hospedagem compartilhada, eles não permitem alterar as configurações do IIS .