LINUX.ORG.RU

Etag и HTTP-кэширование


0

0

Наверняка глупый вопрос, но: откуда сервер при формировании etag знает, изменился ли документ? Документ всегда формируется "полностью" (т.е. скажем данные _всегда_ берутся из БД) и при этом кэшировании мы выигрываем только на отсутствии пересылки документа клиенту?

Отсюда: если я хочу уменьшить нагрузку на базу, лучше использовать заголовок Cache-Control?

И последнее: сервер "у себя" хранит кэши документов (как браузер к примеру) или только управляет продолжительностью их жизни?

З.Ы. Рекомендации мемкешд, проксей и пожеланий докупить парочку серверов просьба не озвучивать.

anonymous

> откуда сервер при формировании etag знает, изменился ли документ?

Для статических html апач, например, смотрит дату последнего изменения. Если вы генерите странички динамически (пыхпыхом), то etag вообще не будет ни создаваться, ни учитываться апачем - это задача ваших скриптов.

> Документ всегда формируется "полностью" (т.е. скажем данные _всегда_ берутся из БД) и при этом кэшировании мы выигрываем только на отсутствии пересылки документа клиенту?

Никто не мешает в скриптах сделать conditional get и не генерировать страничку заново, а ответить 304.

> Отсюда: если я хочу уменьшить нагрузку на базу, лучше использовать заголовок Cache-Control?

Нет. Если вы хотите уменьшить нагрузку на базу, то вам нужна или логика conditional get в скриптах или memcached (второе выгоднее).

> И последнее: сервер "у себя" хранит кэши документов (как браузер к примеру) или только управляет продолжительностью их жизни?

Если вы не ставили дополнительных модулей и не делали хитрых телодвижений, то сервер никакого кеша не хранит.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо, кажется дошло: веб-сервер для вычисления etag'а каждый раз обращается к скриптам и реализовывать логику кэширования нужно там.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.