Forum Webscript.Ru

Программирование => PHP => Тема начата: dub от 26 Января 2006, 23:54:51

Название: Кэширование в CMS
Отправлено: dub от 26 Января 2006, 23:54:51
CMS на PHP+MySQL. Подскажите, пожалуйста, в каком направлении копать в вопросе кэширования.

Заранее благодарен за любую информацию.
Название: Кэширование в CMS
Отправлено: Меняздесьдавнонет от 26 Января 2006, 23:58:25
во-первых - при чём здесь CMS?
а если бы это был форум - то что, приципы кэширования отличались бы?

во-вторых, какое именно кэширование ты имеешь в виду? На уровне страниц или НТТР запросов?
Название: Кэширование в CMS
Отправлено: dub от 27 Января 2006, 00:19:53
Пользователь №1 посылает апачу HTTP-запрос на получение динамического документа. Апач передает запрос на обработку PHP, PHP лопатит базу, возвращает страницу апачу, апач - пользователю.
Пользователь №2 посылает апачу запрос на получение того же документа. Хотелось бы в этом случае знизить нагрузку на PHP и MySQL.
Это какое кэширование? На каком уровне?

Что касается принципов кэширования для форума. По идее, принципы должны отличаться в зависимости от степени персонификации контента.
Название: Кэширование в CMS
Отправлено: Меняздесьдавнонет от 27 Января 2006, 00:25:30
Цитировать
dub:
Это какое кэширование? На каком уровне?

не увидел в описанной схеме никакого кэширования.
только пожелание.
кэширование может быть на уровне запроса - если документ не менялся, то послать  304 Not Modified
а может быть на уровне страницы - просто отдаётся закэшированная страница.

Цитировать
dub:
По идее, принципы должны отличаться в зависимости от степени персонификации контента.

а чем отличается персонификация от любых других параметров запроса страниц?

слушай, а оно тебе вообще нужно - это кэширование?
Название: Кэширование в CMS
Отправлено: dub от 27 Января 2006, 00:34:32
Нужно. Если бы я абсолютно точно представлял себе суть вопроса, то, скорее всего, не обращался бы за помощью.
В общем-то ты прав. Пока, действительно, только пожелание.
Собственно, мне нужно нащупать направление реализации. И, собственно, ты хоть и бурчишь, а уже начинаешь мне помогать.
Название: Кэширование в CMS
Отправлено: Меняздесьдавнонет от 27 Января 2006, 00:40:22
ну, щупай-щупай...
Название: Кэширование в CMS
Отправлено: dub от 27 Января 2006, 01:41:30
Насколько я понимаю, делается примерно так.

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

Когда документ запрашивается в следующий раз, первым делом обрабатывается $_SERVER (http://ua2.php.net/manual/en/reserved.variables.php#reserved.variables.server)["HTTP_CACHE_CONTROL"] в соответствии с RFC 2616 (http://www.faqs.org/rfcs/rfc2616.html), Section 14.9, чтобы определить, есть ли у браузера кэшированная копия документа, и насколько она стара.
Если копия у браузера есть и она моложе даты последнего обновления - то возвращается header (http://www.php.net/manual/en/function.header.php)("HTTP/1.0 304 Not Modified").
Если копии нет или она устарела, выдается кэшированный код документа из кэш-таблицы.

При изменении документа, для которого в кэше уже есть копия, копия заменяется, дата обновляется. Если копии в кэше нет - то можно ничего не делать, пока документ не будет запрошен впервые (а вдруг он никому не нужен?).

Типа того?
Название: Кэширование в CMS
Отправлено: Меняздесьдавнонет от 27 Января 2006, 09:36:07
Цитировать
dub:
но и сохраняется в базе, в отдельной таблице с дополнительными полями,

ROTFLMAO!!!

нет, кэширование тебе, всё-таки, не нужно =))))
Название: Кэширование в CMS
Отправлено: Макс от 27 Января 2006, 11:15:08
dub
1. HTTP
Чтобы использовать кеширование на уровне HTTP надо сначало при первой выдаче документа посылать правильные заголовки. Например Cache-Control,  ETag и Expires (подробности в RFC + была книга о кешировании от орейли)
Чтобы узнать есть кеш и какой он давности - If-Match / If-modified-since

2. Кеширование на стороне сервера обычно делается не в базе, а в файлах (или в memcache-е если можешь себе это позволить).
Название: Кэширование в CMS
Отправлено: dub от 28 Января 2006, 01:04:14
RomikChef
Насколько я понимаю, твоя гиперэмоциональная реакция связана с тем, что результат лучше сохранять в файле. Возникло у меня сегодня с утра сомнение по этому поводу, решил сначала почитать еще, а потом уже продолжить обсуждение.

Макс
Спасибо. Буду копать. Если возникнут более точные вопросы - задам.
Название: Кэширование в CMS
Отправлено: Меняздесьдавнонет от 28 Января 2006, 10:59:55
моя гиперэмоциональная реакция связана с убеждением, что кэширование тебе не нужно.
Название: Кэширование в CMS
Отправлено: dub от 28 Января 2006, 11:26:37
RomikChef
Нет, ты таки умеешь создать обстановку бесконечной доброжелательности.

Повторюсь, я ведь не скрываю, что обратился за помощью. И - вот так неожиданность - именно в той области, где у меня пробелы. Если тебе лично жаль делиться своим драгоценным опытом, полученным в результате усилий, важность которых я ни в коем случае не пытаюсь умалить, только для того, чтобы сократить мне путь, так ведь я и не заставляю тебя это делать. Не помогай. Но и не надо пытаться меня обламывать. Я все равно разберусь - раньше или позже. Да и тебе вроде смысла в этом нет никакого. Разве только ты получаешь от этого какое-то неведомое мне удовольствие.

Так что есть предложение не переходить на перебранку. Если есть что возразить или добавить по существу вопроса (кроме "существо вопроса тебе не нужно") - буду рад.
Название: Кэширование в CMS
Отправлено: Меняздесьдавнонет от 28 Января 2006, 11:30:07
Удовольствие я получаю всегда только одно.
Когда вопрос, на который я отвечаю, имеет смысл. СМЫСЛ. Не высосан из пальца "а хорошо бы построить мост - отсюда, и до самой Москвы...", а основан на конкретной задаче, причём автор хорошо себе её представляет.

В данном случае мы имеем маниловщину.
то есть, автор мало того ,что тратит своё время - так ещё и на чужое зарится, задавая бессмысленные вопросы на форуме.

Впрочем, 90% вопросов на форумах именно такие. Поскольку имея минимальный уровень интеллекта, на любой вопрос пожно найти ответ самостоятельно
Название: Кэширование в CMS
Отправлено: dub от 28 Января 2006, 11:52:18
Цитировать
RomikChef:
на любой вопрос пожно найти ответ самостоятельно

Согласен абсолютно. В моем представлении назначение форума в частности состоит в том, чтобы более опытный мог - по собственной воле, заметь - сузить область поиска менее опытному.

В данном случае начальная область моего поиска настолько широка, что вызывает у тебя раздражение. Что ж, буду работать над ее сужением. Надеюсь, степень осмысленности вопросов также будет расти.

В общем, спасибо в любом случае.
Название: Кэширование в CMS
Отправлено: Меняздесьдавнонет от 28 Января 2006, 13:12:01
как ты уходишь от основного вопроса - уж на сковородке позавидовал бы