There is no doubt that application/json
is the best MIME type for a JSON response.
But I had some experience where I had to use application/x-javascript
because of some compression issues. My hosting environment is shared hosting with GoDaddy. They do not allow me to change server configurations. I had added the following code to my web.config
file for compressing responses.
<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"/>
By using this, the .aspx pages was compressed with g-zip but JSON responses were not. I added
<add mimeType="application/json" enabled="true"/>
in the static and dynamic types sections. But this does not compress JSON responses at all.
After that I removed this newly added type and added
<add mimeType="application/x-javascript" enabled="true"/>
in both the static and dynamic types sections, and changed the response type in
.ashx (asynchronous handler) to
application/x-javascript
And now I found that my JSON responses were compressed with g-zip. So I personally recommend to use
application/x-javascript
only if you want to compress your JSON responses on a shared hosting environment. Because in shared hosting, they do not allow you to change IIS configurations.