Почему кеширование браузера Leverage не работает для Javascript?

При запуске моего сайта через тест скорости страницы Google он говорит, что мне нужно «Использовать кеширование браузера». Установка даты истечения срока действия или максимального возраста в заголовках HTTP для статических ресурсов указывает браузеру загружать ранее загруженные ресурсы с локального диска, а не по сети. "

Затем он перечисляет мои внутренние файлы Javascript, почему нижеприведенное не работает и исправить это?

Вот так выглядит файл htaccess:

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##

<FilesMatch "\\.(js|css|html|htm|php|xml)$">
SetOutputFilter DEFLATE
</FilesMatch>

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl|jpg|png|gif)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>

Спасибо


person Mikey2004    schedule 02.06.2016    source источник


Ответы (3)


Вы указали, что файлы типа text/x-javascript должны кэшироваться, но сказали ли вы веб-серверу, как распознавать такие файлы? Как говорит DanFromGermany, mimetype действительно должен быть application/javascript, однако на вашем веб-сервере это просто произвольная метка . Ваш веб-сервер может уже настроен на распознавание файлов, оканчивающихся на .js, как javascript, и в этом случае достаточно просто изменить соответствующую строку в блоке mod_expires. Вы можете увидеть mimetype, возвращаемый веб-сервером, в firebug, т.е. httpheaders, используя wireshark для мониторинга соединения или с помощью wget/curl из командной строки.

Если ваш веб-сервер возвращает что-то отличное от application/javascript или text/x-javascript, проверьте наличие записи в файле mime.types в каталоге, содержащем вашу конфигурацию Apache.

person symcbean    schedule 02.06.2016
comment
Я пробовал это, но все равно не повезло, я нахожусь на 1 и 1, и похоже, что он использует application/x-javascript. - person Mikey2004; 02.06.2016
comment
Хостинг 1 и 1 ужасающе плох, однако проблема не является непреодолимой, если вы можете применить изменения через htaccess. Просто измените строку в mod_expires, чтобы она соответствовала MIME-типу, который использует веб-сервер. - person symcbean; 02.06.2016
comment
Он использует application/x-javascript, который уже был там, поэтому по какой-то причине он все еще не работает. - person Mikey2004; 02.06.2016
comment
Эм, на самом деле мы говорили о text/x-javascript, application/javascript, но не о application/x-javascript. - person symcbean; 03.06.2016
comment
Нет очевидной причины, по которой ваша конфигурация будет работать для других типов файлов, но не для javascript: вы можете попробовать изменить значения, чтобы убедиться, что файл htaccess вообще оказывает какое-либо влияние, но затем перепроектировать проблемы с помощью хостинга 1and1, чтобы исправить ошибку. проблема? Точно так же есть и другие способы сделать контент кэшируемым, но вы платите 1 и 1 за поддержку — попросите их посоветовать. - person symcbean; 03.06.2016

Официальный тип пантомимы для Javascript — application/javascript, попробуйте вместо этого.

Источник http://www.rfc-editor.org/rfc/rfc4329.txt

x- означает «экспериментальный» и больше не используется с Javascript.

Все эти комбинации либо устарели, либо устарели:

text/x-javascript
text/javascript
application/x-javascript
application/ecmascript

В вашей конфигурации больше неверных MIME-типов:

Неправильно: image/x-icon Правильно: image/vnd.microsoft.icon

Источник: http://www.iana.org/assignments/media-types/image/vnd.microsoft.icon

Неправильно: application/x-pdf Правильно: application/pdf

Источник: https://tools.ietf.org/html/rfc3778

person Daniel W.    schedule 02.06.2016
comment
Я пробовал это, но все равно не повезло, я нахожусь на 1 и 1, и похоже, что он использует application/x-javascript. - person Mikey2004; 02.06.2016

Проверьте конфигурацию вашего хостинга. Я использовал «сервисы SuperCacher» Cpanel: статический кеш Динамический кеш Memcache

они переопределяли мои настройки .htaccess и вызывали эту проблему. как только я их отключил, проблема исчезла.

person buzibuzi    schedule 17.05.2018