| imho.ws |
![]() |
|
|
|
# 1 |
|
Full Member
Регистрация: 29.05.2002
Сообщения: 544
![]() ![]() ![]() ![]() ![]() |
Cache solutions on php4/5
Господа, а какие решения имеются для кеширования в php. Интересуют общие плюсы и минусы решений. Кто что применял, что можно почитать...
Я имею ввиду не только конкретную реализацию, но и общий механизм.
__________________
убрано по просьбе администратора
|
|
|
|
|
# 5 |
|
Full Member
Регистрация: 29.05.2002
Сообщения: 544
![]() ![]() ![]() ![]() ![]() |
я просто сейчас буду заниматься крупным проектом на php. и вот думаю как лучше реализовать кеширование.
т.е. я хочу сделать так, чтобы сервер не генерировал каждый раз все страницы заново, а выдавал их из кеша. но в php нету грамотных механизмов(скажем как на ASP.NET) для подобного кеширования. пример. человек "ходит" по страницам. большая вероятность того, что пока он перемещается(несколько минут) контент в базе не изменится, так зачем же каждый раз выдавать ему одни и те же данные("собирая" их). на ум приходит генерация в html при изменении базы(отдельных файлов). т.е. будет примерно следующее: набор файлов(сгенерированные страницы): news.html catalog.html links.html допустим кто-то меняет таблицу links в бд, автоматом создается новый файл links.html. отсальные файлы не меняются. пользователи получают страницы исключительно из кеша(кроме динамики). а как в таком случае быть с ситуацией скажем такой: пользователь сделал запрос, а в это время генерируется новая страница(из-за изменения в бд), значит пользователю попадет либо устаревшие данные, либо вообще будет какая-нибудь ошибка доступа. можно ли как-нибудь наложить монопольный доступ к файлу определенным процессом(наверное это будет mysql?). или это происходит автоматически? и что в этом случае произойдет? вобщем не совсем ясно возможно ли создать(а может есть уже готовый) механизм разрешения подобных сложностей или может вообще отказаться от такого кеширования в пользу другого решения. можно было бы например кешировать данные, которые зпросил пользователь в той же сессии(фу бяка), но опять же возникает вопрос: как отлавливать изменение бд и данных в сессии конкретного пользователя(каждый раз проверять сверяться с бд - накладно), а чего-нибудь вроде callback-функции на аткое событие нету(вообще событий нету ).p.s. кстати я как-то делал такую штуку. поиск. первый раз происходит выборка всех данных(и запись в файл сессии), а затем при постраничном выводе данные берутся уже оттуда, но проблему с обновлением данных я таки не решил...
__________________
убрано по просьбе администратора
Последний раз редактировалось Sheryld; 11.08.2004 в 21:58. |
|
|
|
|
# 6 |
|
МОД-Оператор ЭВМ
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Вообще по логике вещей, без динамики будет сложно. Банальный набор документов (напр. статей) при выводе нужно прогнать через:
- Язык - Стилизация - Настройки системы - Настройки пользователя Если я исправил 1 шаблон, то прийдется перегенерировать все его вхождения. И не дай бог это чаще всего меняемые header и footer. Я обычно кэширую только cpu-critical действия. Серьозная обработка текста (раскраска кода напр.), работа с графикой и т.д. С остальным сервер в легкую справляется. |
|
|
|
|
# 7 |
|
Full Member
Регистрация: 29.05.2002
Сообщения: 544
![]() ![]() ![]() ![]() ![]() |
а не обязательно хранить все страницы целиком, их можно потом собирать из кусков. как вариант генерируем шаблоны из бд, а потом вставляем их в другие шаблоны. хотя опять же возникает гемор и путаница
__________________
убрано по просьбе администратора
|
|
|