Я не знаю всего о кешировании, но вот несколько советов:
Anon # 1,2: (статические, полудинамические элементы)
Вы можете установить их, чтобы никогда не истек. Если вам нужно изменить их, измените их URL. Чеки If-Modified-Since дешевы, но не бесплатны.
Anon # 3: (динамические элементы)
Вот где ETags и / или Last-Modified очень пригодятся. В зависимости от того, что вы обслуживаете, вы можете создать хороший Last-Modified заголовок. Если в вашей базе данных хранится измененная дата всех элементов, которые вы планировали показать, вы могли бы получить эффект SELECT MAX(last_updated) FROM items_to_show
. Предупреждение: Здесь учитывается возраст данных, а не возраст вашего шаблона, поэтому, если вы изменили свой
Шаблон Django, вы будете в недоумении, как сообщить, что в
заголовок.
Или вы могли бы сделать нечто подобное с ETag. Это может быть контрольная сумма содержимого, которое
генерируются. Это будет учитывать изменение шаблона.
Что следует отметить в обоих этих подходах к кешированию динамического контента:
что они действительно
сэкономить больше трафика, чем они делают в Интернете
загрузка сервера / базы данных. Вы всегда можете разумно использовать Expires
заголовок, хотя, чтобы помочь в случаях, когда изменения на странице являются периодическими и
предсказуемы.
Мои предложения по входу в систему будут аналогичными, за исключением того, что я посмотрю на заголовок Vary. Это может сигнализировать кеширующим прокси, что разные вошедшие в систему пользователи не будут обслуживаться одним и тем же контентом.
В общем, я бы использовал ETag или Last-Modified, но не оба.