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, вы можете добавить номер версии в путь к файлу или в строку запроса.

Другие вопросы по тегам