[![image][1]][2]
В этой заметке речь пойдет о [HTTP-кэшировании][3] ([перевод][4]) и его использовании совместно с фреймворком Django. Мало кто будет спорить с утверждением о том, что применение HTTP-кэширования — очень правильная и разумная практика разработки веб-приложений. Однако именно в этом функционале Django содержит ряд ошибок и неточностей, которые очень сильно ограничивают практическую пользу от такого подхода. Например, до сих пор актуален баг [\#15855][5], заведенный в апреле 2011 года, который может приводить к очень неприятным ошибкам в работе веб-приложения.
В Django есть два стандартных способа включения HTTP-кэширования: через активацию **UpdateCacheMiddleware**/**FetchFromCacheMiddleware**, либо через декорирование функции представления при помощи декоратора **cache\_page**. У первого способа имеется один существенный недостаток — он включает HTTP-кэширование для всех без исключения представлений (view) проекта, зато второй содержит тот самый баг #15855. Если бы не этот баг, то вариант с использованием cache\_page являлся бы более предпочтительным. Плюс, такой вариант хорошо согласуется с важнейшим из постулатов [The Zen of Python][6], что «явное лучше неявного». [Читать дальше →][7]
[1]:
https://habrastorage.org/files/ea8/e35/828/ea8e3582889040839d40c1ba58b738a9.png
[2]:
https://habrahabr.ru/company/redmadrobot/blog/305774/
[3]:
https://www.mnot.net/cache_docs/
[4]:
https://habrahabr.ru/post/203548/
[5]:
https://code.djangoproject.com/ticket/15855
[6]:
https://www.python.org/dev/peps/pep-0020/
[7]:
https://habrahabr.ru/post/305774/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut