IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Cache solutions on php4/5 (http://www.imho.ws/showthread.php?t=66069)

Sheryld 11.08.2004 16:22

Cache solutions on php4/5
 
Господа, а какие решения имеются для кеширования в php. Интересуют общие плюсы и минусы решений. Кто что применял, что можно почитать...

Я имею ввиду не только конкретную реализацию, но и общий механизм.

RaZEr 11.08.2004 18:35

Цитата:

Господа, а какие решения имеются для кеширования в php
Zend Optimizer, Turck MMCache в основном используются.

Sheryld 11.08.2004 20:13

но это у провайдера, а если нужно реализовать кеширование самому?

p.s. смотрел PEAR, слишком наварочено...

RaZEr 11.08.2004 20:22

Цитата:

а если нужно реализовать кеширование самому?
Это довольно общая задача. Принцип я думаю ты знаешь, а конкретные советы можно дать только имея на руках конкретную задачу.

Sheryld 11.08.2004 21:53

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

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

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

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

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

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

news.html
catalog.html
links.html

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

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

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

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

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

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

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

RaZEr 11.08.2004 22:07

Вообще по логике вещей, без динамики будет сложно. Банальный набор документов (напр. статей) при выводе нужно прогнать через:
- Язык
- Стилизация
- Настройки системы
- Настройки пользователя

Если я исправил 1 шаблон, то прийдется перегенерировать все его вхождения. И не дай бог это чаще всего меняемые header и footer.

Я обычно кэширую только cpu-critical действия. Серьозная обработка текста (раскраска кода напр.), работа с графикой и т.д. С остальным сервер в легкую справляется.

Sheryld 11.08.2004 22:46

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


Часовой пояс GMT +4, время: 04:27.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.