Всем привет!
Давненько я не посещал эту тему. Наверное, с тех пор как все расширения, которые я использую, были доработаны в этом плагине. Однако, на этой неделе стал разносторонне изучать информацию о заголовке Cache-control, директивах max-age и must-revalidate, времени кэширования страниц. И как только я начал изучать этот вопрос, я понял, что...
Но обо всём по порядку. Для тех, кто не особо вдавался в подробности, опишу принцип работы этих двух директив. Max-age указывает сколько браузер (и промежуточные кэш-серверы) может хранить страницу в кэше и использовать её не глядя на сервер, а если есть директива must-revalidate в заголовке Cache-control, то по истечении времени max-age кэш должен пройти проверку на сервере. Проверка может заключаться в виде двух вариантов: либо по Last-modified, либо по Etag. В зависимости от результата кэш либо будет заменён на новую копию страницы с сервера, либо будет хранить этот вариант дальше.
Хорошо, надеюсь с этим всё понятно.
Кто хочет знать немного больше, смотрим спойлер.
В результате этого знания я поразмышлял, что нельзя категорично подходить к установке одного и того же времени хранения кэша для всех страниц. Для ясности, вот несколько примеров.
Представьте две темы посещаемого форума. В одну тему последний раз написал кто-то три года назад, а в другую тему написали сегодня. Какая вероятность того, что кто-то напишет в тему трёх годовалой давности и какая вероятность того, что кто-то напишет в свежую тему? Очевидно, что старую тему мы можем кэшировать с достаточным большим временем хранения, потому что вряд ли она изменится. А свежую тему нельзя долго хранить в кэше, так как вполне вероятно, что в ней кто-то разместит сообщения, и из-за кэша пользователи не увидят обновления страницы.
Другой пример. Интернет-магазин. Есть в наличии единичный товар и товар, запасов которого хватит на несколько месяцев. Очевидно, что такие страницы тоже нельзя хранить в кэше с одинаковым временем хранения.
Если кто-то использует комментарии к статьям, то похожий пример может быть использован и в этом случае. Более вероятно увидеть новые комментарии к новой статье, чем к старой.
Я для себя решил, что должен быть гибкий подход для установки времени хранения кэша. К сожалению, я могу только захардкодить логику в плагине. Использование параметров в настройках плагина не мой конёк.
Надеюсь, мои мысли будут для кого-то полезными.