Django: кеш, если вывод не изменился? - PullRequest
1 голос
/ 01 марта 2011

Это вопрос новичка от того, кто мало знает о кэшировании HTTP:)

Я использую Django с декоратором @never_cache.

Есть ли способ указать браузеру кэшировать страницу , если содержимое не изменилось, и в этом случае браузер должен перезагрузить страницу?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 01 марта 2011

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

Механизм для этого - заголовок ETag .Django имеет хорошую поддержку для этого, просто установите USE_ETAGS в settings.py, и вы получите выгоду от возврата 304 не измененных ответов, где это уместно, на все ваши страницы.

3 голосов
/ 01 марта 2011

Я думаю, что чтение будет хорошей отправной точкой:

http://www.eflorenzano.com/blog/post/drop-dead-simple-django-caching/

Выдержка:

Кэширование легко испортить.Обычно это ручной процесс, который подвержен ошибкам и утомителен.Это на самом деле довольно легко кешировать, но знать, когда сделать недействительными какие кэши, становится намного сложнее .[...] Основная идея заключается в том, что каждая модель Django имеет первичный ключ, который обеспечивает отличный ключ к кешу.Используя эту базовую идею, мы можем охватить довольно большой случай использования автоматического кэширования гораздо более детерминированным способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...