я просто сейчас буду заниматься крупным проектом на php. и вот думаю как лучше реализовать кеширование.
т.е. я хочу сделать так, чтобы сервер не генерировал каждый раз все страницы заново, а выдавал их из кеша.
но в php нету грамотных механизмов(скажем как на ASP.NET) для подобного кеширования.
пример. человек "ходит" по страницам. большая вероятность того, что пока он перемещается(несколько минут) контент в базе не изменится, так зачем же каждый раз выдавать ему одни и те же данные("собирая" их).
на ум приходит генерация в html при изменении базы(отдельных файлов). т.е. будет примерно следующее:
набор файлов(сгенерированные страницы):
news.html
catalog.html
links.html
допустим кто-то меняет таблицу links в бд, автоматом создается новый файл links.html. отсальные файлы не меняются.
пользователи получают страницы исключительно из кеша(кроме динамики).
а как в таком случае быть с ситуацией скажем такой:
пользователь сделал запрос, а в это время генерируется новая страница(из-за изменения в бд), значит пользователю попадет либо устаревшие данные, либо вообще будет какая-нибудь ошибка доступа. можно ли как-нибудь наложить монопольный доступ к файлу определенным процессом(наверное это будет mysql?). или это происходит автоматически? и что в этом случае произойдет?
вобщем не совсем ясно возможно ли создать(а может есть уже готовый) механизм разрешения подобных сложностей или может вообще отказаться от такого кеширования в пользу другого решения.
можно было бы например кешировать данные, которые зпросил пользователь в той же сессии(фу бяка), но опять же возникает вопрос: как отлавливать изменение бд и данных в сессии конкретного пользователя(каждый раз проверять сверяться с бд - накладно), а чего-нибудь вроде callback-функции на аткое событие нету(вообще событий нету

).
p.s. кстати я как-то делал такую штуку. поиск. первый раз происходит выборка всех данных(и запись в файл сессии), а затем при постраничном выводе данные берутся уже оттуда, но проблему с обновлением данных я таки не решил...