![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
kanaris |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 16.2.2008 Репутация: нет Всего: -1 |
Хочу услышать советы тех, кто делал кеширование в своих движках или сталкивался с подобными проблемами ну и вообще всех кто знает
![]() Придумываю алгоритм кеширования веб-страниц в движке. Обычно это делается в след. этапы: 1) из БД извлекается инфа о последнем обновлении страницы (по заданному урлу, кукам, и др) 2) извлекается последний образ кеширования страницы (по заданному урлу, кукам, и др) 3) если последний образ страницы устарел, сгенерить страницу по новой и обновить последний образ в базе. 4) если образ не устарел, в браузер выдать эту готовую страницу и пропустить процесс генерирования страницы (инклуд модулей, обработка данных, парсинг, етс). Возникает вопрос: как узнать, изменилась ли страница, не генерируя ее заново? На обновление страницы влияют такие факторы (не полный список): 1) изменение конкретной таблицы в БД 2) изменение файлов на сервере (если скрипт считывает какую-то директорию) 3) фактор времени (например, текущее число на календаре) - страница уже будет другой следующего числа 4) Залогиненный юзер (для каждого юзера одна и та же страница будет другой, например панель "Здравствуйте Пользователь! У вас 20 новых сообщений") 5) скин 6) язык 7) ... Также нужно предусмотреть такую проблему: если изменилась одна таблица (добавили/удалили/отредактировали запись), то должна измениться только та страница, на которую повлияла эта запись, а не все страницы, использующие эту таблицу (которые бы не изменились при редактировании таблицы), и чтобы страница не перегенеривалась, если она не изменилась. В общем нужно придумать самый гибкий и универсальный вариант. кто что посоветует... Это сообщение отредактировал(а) kanaris - 30.8.2008, 16:21 |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
В ORM и других компонентах предусмотреть систему сигналов, на которые можно повесить обработчики. Через них осуществлять инвалидацию кеша.
Ну и вообще, кешировать всю страницу почти всегда не оправдано и глупо, лучше и гибе кешировать куски html и промежуточные данные. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
http://forum.vingrad.ru/index.php?showtopi...t&p=1602378
Тема в догонку: http://forum.vingrad.ru/forum/topic-82069.html |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
Самое простое что я писал для кеширования...
Кеширует html кусками, а также переменные...
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |