WebPageTest жалуется на отсутствие кэширования статических ресурсов, даже если у меня включено кэширование
Я тестирую свой веб-сайт на http://www.webpagetest.org/. Это дает мне
а затем продолжает давать этот список:
Использовать в браузере кэширование статических ресурсов: 63/100
ВНИМАНИЕ - (2,0 часа) - http://stats.g.doubleclick.net/dc.js
ВНИМАНИЕ - (5,5 дней) - http://www.bookmine.net/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
ВНИМАНИЕ - (5,5 дней) - http://www.bookmine.net/favicon.ico
ВНИМАНИЕ - (5,5 дней) - http://www.bookmine.net/js/index.min.js
ВНИМАНИЕ - (5,5 дней) - http://www.bookmine.net/js/jquery-ui-1.8.13.custom.min.js
ВНИМАНИЕ - (5,5 дней) - http://www.bookmine.net/css/index.css
ВНИМАНИЕ - (5,5 дней) - http://www.bookmine.net/js/jquery.form.min.js
ВНИМАНИЕ - (5,5 дней) - http://www.bookmine.net/css/jquery-ui-1.8.13.custom.css
забавно то, что он распознает, что у меня включено кэширование (установлено 5,5 дней, как сообщалось выше), тогда на что он жалуется? Я также подтвердил, что у меня есть default_expiration: "5d 12h"
установить в моем app.yaml
и по этой ссылке:
default_expiration
Необязательный. Время, в течение которого статический файл, обслуживаемый обработчиком статического файла, должен кэшироваться веб-прокси и браузерами, если обработчик не указывает свое собственное истечение срока действия. Значение представляет собой строку чисел и единиц, разделенных пробелами, где единицы могут быть
d
несколько дней,h
часами,m
на минуты иs
на секунды. Например, "4d 5h" устанавливает срок действия кэша равным 4 дням и 5 часам после первого запроса файла. Если не указан, рабочий сервер устанавливает срок действия до 10 минут.Например:
приложение: myapp версия: альфа-001 время выполнения: python27 api_version: 1 потокобезопасный: true
default_expiration: "4д 5ч"
обработчики: Важное замечание: Время истечения будет отправлено в заголовках ответов HTTP Cache-Control и Expires, и, следовательно, файлы, вероятно, будут кэшироваться браузером пользователя, а также промежуточными прокси-серверами, такими как интернет-провайдеры. Как только файл передается с заданным временем истечения, обычно нет способа очистить его от промежуточных кешей, даже если пользователь очищает свой кеш браузера. Повторное развертывание новой версии приложения не приведет к сбросу кешей. Поэтому, если вы когда-либо планируете изменить статический файл, он должен иметь короткий (менее одного часа) срок действия. В большинстве случаев по умолчанию подходит 10-минутное время истечения.
Я даже подтвердил ответ, мой сайт возвращается в Fiddler:
Ответы HTTP/200 кэшируются по умолчанию, если только заголовки Expires, Pragma или Cache-Control отсутствуют и не запрещают кэширование. HTTP/1.0 Expires Заголовок присутствует: сб, 26 сен 2015 08:14:56 GMT
Заголовок HTTP / 1.1 Cache-Control присутствует: public, max-age = 475200 public: этот ответ МОЖЕТ быть кэширован любым кешем. max-age: срок действия этого ресурса истечет через 132 часа. [475200 сек]
Заголовок HTTP/1.1 ETAG присутствует: "74YGeg"
Так почему я получаю D?
Добавив несколько полезных ссылок:
- http://www.learningtechnicalstuff.com/2011/01/static-resources-and-cache-busting-on.html
- http://www.codeproject.com/Articles/203288/Automatic-JS-CSS-versioning-to-update-browser-cach
- https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching
- https://developers.google.com/speed/docs/insights/LeverageBrowserCaching
- /questions/27894642/kak-zastavit-klientov-obnovlyat-fajlyi-javascript/27894680#27894680
- http://www.particletree.com/notebook/automatically-version-your-css-and-javascript-files/
1 ответ
WebPagetest выдает предупреждение, если срок действия кэша меньше 30 дней. Вы можете просмотреть эту информацию, нажав на оценку "D" в результатах вашего теста и просмотрев глоссарий "Cache Static". Вы также можете найти эту информацию здесь.
Если вам нужно изменить кэшированный статический файл JavaScript, вы можете добавить номер версии в путь к файлу или в строку запроса.