Это правило срабатывает, когда PageSpeed Insights обнаруживает, что ответ вашего сервера не содержит четкого заголовка кэша или что некоторые ресурсы указаны для кэширования только в течение небольшого периода времени.
如果用户会多次访问您的网站,那么静态资源的浏览器缓存可以节省用户的时间。缓存标头应当应用到所有可缓存的静态资源中,而不仅仅是应用到一小部分静态资源(例如,图片)中。可缓存的资源包括JS和CSS文件、图像文件及其他二进制对象文件(媒体文件和PDF文件等)。通常情况下,HTML不是静态资源,默认情况下不应被视为可缓存资源。您应考虑哪些缓存政策适用于您网站的HTML。
Включить кэш браузера для вашего сервера. Статический ресурс должен иметь срок действия кэша не менее недели. Сторонние ресурсы, такие как реклама или виджеты, также должны иметь срок действия кэша как минимум один день. Для всех кэшируемых ресурсов рекомендуем следующие настройки:
Expires
устанавливается как будущая дата, минимум неделя, максимум год (мы склоняемся к тому, чтобы установитьExpires
без установкиCache-Control: max-age
,因为前者受支持的范围更为广泛)。请勿将其设为超过一年的将来日期,因为这样就违反了RFC准则。Эти заголовки используются для указания соответствующего периода времени, и браузер может использовать кэшированные ресурсы в течение указанного периода времени, не просматривая, предоставляет ли веб-сервер новую версию ресурса. Эти заголовки кэша мощны и не ограничены какими-либо условиями применения. После установки этих заголовков и загрузки ресурса браузер не будет выдавать никаких запросов GET для ресурса, если только срок истечения срока действия не истечет или не достигнет максимального значения времени, или если пользователь не очистит кэш.
Эти заголовки могут быть использованы для указания того, как браузер должен определять, идентичны ли файлы, используемые для кэширования. НаLast-Modified
В заголовке указана дата, а вETag
标头中指定的则可以是唯一标识资源的任意值(通常为文件版本或内容哈希值)。Last-Modified
Является заголовком кэша с « более слабым » функционалом, так как браузер использует метод пробного зондирования, чтобы определить, нужно ли захватывать контент из кэша.
С помощью этих заголовков браузер может эффективно обновлять свои кэшированные ресурсы, выдавая условный запрос GET, когда пользователь однозначно перезагружает страницу. Условные GET-запросы не возвращают полный ответ, если вы не измените ресурс на стороне сервера, поэтому такие запросы имеют меньшую задержку по сравнению с полными GET-запросами.
Expires
илиCache-Control max-age
以及一个Last-Modified
或ETag
Жизненно важно. Вам не обязательно указывать одновременноExpires
ИCache-Control: max-age
;或同时指定Last-Modified
ИETag
.
Для ресурсов, которые время от времени меняются, мы можем позволить браузеру кэшировать соответствующий ресурс до тех пор, пока этот ресурс не изменится на сервере, а сервер в этот момент уведомляет браузер о наличии новой версии доступной. Мы можем добиться этого, указав уникальный веб-сайт для каждой версии ресурса. Например, предположим, что у нас есть ресурс под названием « my_stylesheet.css». Мы можем переименовать файл в « my_stylesheet_fingerprint.css». При изменении ресурса меняется его отпечаток пальца, а вместе с ним и соответствующий веб-сайт. Как только сайт был изменен, система заставляет браузер заново захватывать ресурс. С помощью отпечатков пальцев мы можем даже установить будущие даты истечения срока действия для ресурсов, которые меняются чаще.
Распространенным методом распознавания отпечатков пальцев является использование 128-битного шестнадцатеричного числа, кодирующего хеш-значение содержимого файла.
Другой стратегией является создание новой версии каталога непосредственно для новой версии приложения, а затем размещение всех ресурсов для отдельных версий в каталоге версии. Недостатком этого является то, что если ресурсы в различных версиях не изменяются, то их веб-сайты все равно будут изменяться для обязательной повторной загрузки. При использовании хэш-значения контента проблема не встречается, но этот подход несколько сложнее.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under theApache 2.0 License. For details, see our Site Policies.