Каковы оптимальные методы кэширования HTTP для статического сайта с высоким трафиком? - PullRequest
2 голосов
/ 01 августа 2011

У нас довольно статичный сайт с высоким трафиком (т.е. без серверного кода), с большим количеством изображений, сценариев, CSS, размещенных на IIS 7.0

Мы хотели бы включить некоторое кэширование, чтобы уменьшить количество серверовзагрузки, и считается, что срок действия веб-контента истекает в будущем.В IIS мы можем сделать это на глобальном уровне через раздел «Expire web content» общих заголовков http в модуле заголовка ответа IIS.Возможно, срок действия содержимого истекает через 7 дней после подачи.

Все, что на самом деле делает, - это, насколько я могу судить, задает заголовок ответа HTTP max-age, что, я думаю, имеет смысл.

Теперь путаница:

  1. Во-первых, все браузеры, которые я проверял (IE9, Chrome, FF4), кажется, игнорируют это и все еще делают условные запросы к серверу, чтобы увидеть, изменился ли контент,Итак, я не совсем уверен, на что на самом деле повлияет заголовок ответа max-age ?!Это могут быть старые браузеры?Или веб-кеши?

  2. Возможно, мы захотим изменить изображение на сайте в кратчайшие сроки ... Я предполагаю, что если максимальный возраст равен на самом делеиспользуется чем-то, что по самой своей природе не будет проверять, изменилось ли это изображение в течение 7 дней ... так что это тоже не то, что мы хотим

Интересно, еслиЧто делать, если разделить сайт на папки с содержимым действительно не часто, а включить только один долгосрочный срок действия этих папок?Возможно, изменить строку запроса, чтобы принудительно обновить содержимое этих папок, если это необходимо (например, /assets/images/background.png?version=2)?

В любом случае, просмотрев (довольно сухо!) HTTP-спецификация и некоторые учебные пособия , я до сих пор не понимаю, что правильно в нашей ситуации.

Любой реальный опыт ситуацииподобный нашему был бы очень оценен!

1 Ответ

1 голос
/ 15 декабря 2015

Браузеры сначала извлекают HTML, а затем все ресурсы внутри (css, javascript, images и т. Д.).

Если вы заставите HTML истечь в ближайшее время (например, 1 час или 1 день), а затем истечет срок действия других ресурсов через 1 год, вы можете получить лучшее из обоих миров.

Когда вам нужно обновить изображение или другой ресурс, вы просто меняете имя этого файла и обновляете HTML для соответствия.

В следующий раз, когда пользователь получит новый HTML-код, браузер увидит новый URL-адрес для этого изображения и получит его заново, одновременно извлекая все другие ресурсы из кэша.

Кроме того, на момент написания этой статьи (декабрь 2015 года) Firefox ограничивал максимальное количество одновременных подключений к серверу до шести (6). Это означает, что если у вас есть 30 или более ресурсов, которые размещены на одном и том же веб-сайте, только 6 загружаются в любое время до загрузки страницы. Вы можете немного ускорить это, используя сеть доставки контента (CDN), чтобы все загружалось сразу.

...