Показать сообщение отдельно
Старый 11.08.2004, 21:53     # 5
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
я просто сейчас буду заниматься крупным проектом на php. и вот думаю как лучше реализовать кеширование.

т.е. я хочу сделать так, чтобы сервер не генерировал каждый раз все страницы заново, а выдавал их из кеша.

но в php нету грамотных механизмов(скажем как на ASP.NET) для подобного кеширования.

пример. человек "ходит" по страницам. большая вероятность того, что пока он перемещается(несколько минут) контент в базе не изменится, так зачем же каждый раз выдавать ему одни и те же данные("собирая" их).

на ум приходит генерация в html при изменении базы(отдельных файлов). т.е. будет примерно следующее:

набор файлов(сгенерированные страницы):

news.html
catalog.html
links.html

допустим кто-то меняет таблицу links в бд, автоматом создается новый файл links.html. отсальные файлы не меняются.

пользователи получают страницы исключительно из кеша(кроме динамики).

а как в таком случае быть с ситуацией скажем такой:

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

вобщем не совсем ясно возможно ли создать(а может есть уже готовый) механизм разрешения подобных сложностей или может вообще отказаться от такого кеширования в пользу другого решения.

можно было бы например кешировать данные, которые зпросил пользователь в той же сессии(фу бяка), но опять же возникает вопрос: как отлавливать изменение бд и данных в сессии конкретного пользователя(каждый раз проверять сверяться с бд - накладно), а чего-нибудь вроде callback-функции на аткое событие нету(вообще событий нету).

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

Последний раз редактировалось Sheryld; 11.08.2004 в 21:58.
Sheryld вне форума