Nie ma wątpliwości, że application/json
jest to najlepszy typ MIME dla odpowiedzi JSON.
Ale miałem pewne doświadczenie, z którego musiałem korzystać z application/x-javascript
powodu problemów z kompresją. Moje środowisko hostingowe to hosting współdzielony z GoDaddy . Nie pozwalają mi zmieniać konfiguracji serwera. Do mojego web.config
pliku dodałem następujący kod do kompresji odpowiedzi.
<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"/>
Dzięki temu strony .aspx zostały skompresowane za pomocą g-zip, ale odpowiedzi JSON nie. dodałem
<add mimeType="application/json" enabled="true"/>
w sekcjach typów statycznych i dynamicznych. Ale to wcale nie kompresuje odpowiedzi JSON.
Następnie usunąłem ten nowo dodany typ i dodałem
<add mimeType="application/x-javascript" enabled="true"/>
zarówno w sekcjach typów statycznych, jak i dynamicznych, i zmieniono typ odpowiedzi w
.ashx (program obsługi asynchronicznej) do
application/x-javascript
A teraz odkryłem, że moje odpowiedzi JSON zostały skompresowane za pomocą g-zip. Więc osobiście polecam używać
application/x-javascript
tylko jeśli chcesz skompresować swoje odpowiedzi JSON we współdzielonym środowisku hostingowym . Ponieważ w hostingu współdzielonym nie pozwalają one zmieniać konfiguracji IIS .