В CUSTIS — ведущий веб-разработчик
Мои доклады и контакты: http://yourcmc.ru/wiki/User:VitaliyFilippov
Поддерживаю сборку MediaWiki4Intranet: http://wiki.4intra.net/
(«И давно вы страдаете программизмом?»)
Адрес этого доклада: http://lib.custis.ru/WebAppCaching
База заранее вычисленных данных — не кэш! Ибо:
Больше проблем, чем плюсов ☹. Самая главная:
Управляемая память:
Неуправляемая/разделяемая (например, так делают Одноклассники)
⇒ Кэш нужно обновлять (сбрасывать).
Простейшие варианты:
Списочный метод:
Версионный метод :
Но: нужен Redis!
«Положил и точно заберу»
Например, сессии в memcached
Кэширование авторизованных страниц
Или одного и того же списка с выбранным элементом
(итог — комбинаторный взрыв)
Аппарат искусственного дыхания
Будет очень грустно его отключать (сбрасывать кэш)
Cache hit под 100 %, а всё тормозит!
Кэшировали яро, но не то, что надо
Запрос | Ответ |
---|---|
МЕТОД /адрес/?параметры HTTP/1.1 Host: домен.сайта Заголовок: Значение |
HTTP/1.1 000=код_статуса Статус Ответа Content-Type: text/html; charset=UTF-8 Заголовок: Значение |
google://php отключить кэш
HTTP 1.0: (по времени)
HTTP 1.1: (по времени и значениям)
Для содержимого достаточно отслеживать даты изменений:
Для статики:
Как можно бОльшие куски информации:
Нет понятия «объект»? ⇒ Модель
Не можем кэшировать шаблоны, так как непонятно, где шаблоны? ⇒ View
⇒ Инкапсулировать их в Stash
Либо M-V-Presenter
Либо массовая автозагрузка
…как кэшировать?
⇒ Кэшировать после шаблона
Веб — не низкий уровень, до кэша CPU не спустишься :)
JavaScript:
MySQL:
PostgreSQL:
http://lib.custis.ru/WebAppCaching
vfilippov d0g custis d0t ru
vitalif d0g mail d0t ru
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».
Репликация: База Знаний «Заказных Информ Систем» → «Кэширование в веб-приложениях - что, где, когда»