kanaris
Новичок
Кеширование в сайтовом движке, как реализовать?
Хочу услышать советы тех, кто делал кеширование в своих движках или сталкивался с подобными проблемами ну и вообще всех кто знает
Придумываю алгоритм кеширования веб-страниц в движке. Обычно это делается в след. этапы:
1) из БД извлекается инфа о последнем обновлении страницы (по заданному урлу, кукам, и др)
2) извлекается последний образ кеширования страницы (по заданному урлу, кукам, и др)
3) если последний образ страницы устарел, сгенерить страницу по новой и обновить последний образ в базе.
4) если образ не устарел, в браузер выдать эту готовую страницу и пропустить процесс генерирования страницы (инклуд модулей, обработка данных, парсинг, етс).
Возникает вопрос: как узнать, изменилась ли страница, не генерируя ее заново? На обновление страницы влияют такие факторы (не полный список):
1) изменение конкретной таблицы в БД
2) изменение файлов на сервере (если скрипт считывает какую-то директорию)
3) фактор времени (например, текущее число на календаре) - страница уже будет другой следующего числа
4) Залогиненный юзер (для каждого юзера одна и та же страница будет другой, например панель "Здравствуйте Пользователь! У вас 20 новых сообщений")
5) скин
6) язык
7) ...
Также нужно предусмотреть такую проблему: если изменилась одна таблица (добавили/удалили/отредактировали запись), то должна измениться только та страница, на которую повлияла эта запись, а не все страницы, использующие эту таблицу (которые бы не изменились при редактировании таблицы), и чтобы страница не перегенеривалась, если она не изменилась.
В общем нужно придумать самый гибкий и универсальный вариант. кто что посоветует...
Хочу услышать советы тех, кто делал кеширование в своих движках или сталкивался с подобными проблемами ну и вообще всех кто знает

Придумываю алгоритм кеширования веб-страниц в движке. Обычно это делается в след. этапы:
1) из БД извлекается инфа о последнем обновлении страницы (по заданному урлу, кукам, и др)
2) извлекается последний образ кеширования страницы (по заданному урлу, кукам, и др)
3) если последний образ страницы устарел, сгенерить страницу по новой и обновить последний образ в базе.
4) если образ не устарел, в браузер выдать эту готовую страницу и пропустить процесс генерирования страницы (инклуд модулей, обработка данных, парсинг, етс).
Возникает вопрос: как узнать, изменилась ли страница, не генерируя ее заново? На обновление страницы влияют такие факторы (не полный список):
1) изменение конкретной таблицы в БД
2) изменение файлов на сервере (если скрипт считывает какую-то директорию)
3) фактор времени (например, текущее число на календаре) - страница уже будет другой следующего числа
4) Залогиненный юзер (для каждого юзера одна и та же страница будет другой, например панель "Здравствуйте Пользователь! У вас 20 новых сообщений")
5) скин
6) язык
7) ...
Также нужно предусмотреть такую проблему: если изменилась одна таблица (добавили/удалили/отредактировали запись), то должна измениться только та страница, на которую повлияла эта запись, а не все страницы, использующие эту таблицу (которые бы не изменились при редактировании таблицы), и чтобы страница не перегенеривалась, если она не изменилась.
В общем нужно придумать самый гибкий и универсальный вариант. кто что посоветует...