к вопросу о кешировании на стороне сервера

  • Автор темы Автор темы Spear
  • Дата начала Дата начала

Spear

почемучка
к вопросу о кешировании на стороне сервера

Добрый вечер,
я недавно поднимал тему о кешировании некоторых частей сайта на стороне серера.
Реализовал это так:
выполняется РНР код (запросы в базу и т.п) и создается ХТМЛ код. который записывается в кеш-файл.
Потом проверяется, как давно был сделан файл, и, если недавно - то инклудится его кеш.
Вроде просто и удобно, но сейчас решил переделать немного движок, начать использовать шаблоны (шаблоны вида $text="test"; include="textara.tpl" (в последнем в том месте, где должен быть текст стоит <?$text;?> )
Так вот - хотел бы узнать как правильнее записывать кеш не готовго ХТМЛА, а кешировать значения переменных.
Просто писать в кеш файл
$text = "test";
и так далее? Или есть более "навороченные" схемы?

Ещё хотел уточнить такой момент:
я как-то спрашивал, как можно пердотвратить ошибку кеширования (например если ктото обратился к файлу в момент его создания или ещё чего). Мне сказали что нужно "юзать" флаги, которые помогут узнать что файл создался полностью. Какие флаги они имели ввиду?
 
Spear
странный вопрос... ты что, всерьез полагаешь, что кто-то будет в один момент запрашивать страницу а кто-то будет в нее писать? ну так ты ошибаешься... для этого как минимум надо иметь штаб блоггеров и сайт с нехилой посещаемостью
 
master_x
Вопрос логичный. Мне вот странно, что многие о такой возможности предпочитают забывать.
 
народ, ну я же серьезно спрашиваю.
Даже если бы у меня был сайт с посещаемостью 5 селовек в сутки и имел всего 5 страниц контекнта - это не повод для НЕ ЗНАНИЯ.
Я же учусь.. а как учиться, если на простой прямой вопрос некоторые личности начинают ОФФТОПИТЬ, говоря что раз у меня непосещаемый сайт то мне это не нужно. Откуда можно узнать насколько мой сайт посещаем? И может я не для себя делаю вообще :(
 
Вопрос просто сложный и ответа в 2 слова на него нет. Вообще самое быстрое - это статика. Соответственно и нужно стремиться к тому, чтобы в кеше был только html. Другое дело, что бывают данные, которые обновляются при каждой загрузке страницы.
По поводу
>Ещё хотел уточнить такой момент:
Это нужно гуглить на предмет семафоров. Примитивная реализация следующая: Когда процесс хочет изменять файл, он создаёт файл, назовём его для краткости файл-семафор. После окончания изменений файл-семафор убивается. Соответственно когда дугой процесс хочет изменить файл, он проверяет наличие файла-семафора. Если он существует, то процесс не начинает изменять файл, а каким-то образом обрабатывает эту ошибку. А если нет, то создаёт файл-семафор и т.д.

Прошу обратить внимание, что ключевое слово здесь примитивная
 
Здравствуйте!
А у меня несколько другой вопрос из этой же темы - как отражается использование "некеширующих" заголовков типа:

// print no-cache headers
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

на поисковых системах? до меня дошел слух, что поисковики "не любят" антикеширующие заголовки... правда ли это?
и как вообще граммотнее поступать, когда нужно запретить сервакам кешировать страницу?
Мне это надо, потому-что провайдер у нас в городе такой, который все подряд кеширует - и динамические прайс-листы, гостевые и новости трудно сделать - обновление проявляется только на следующий день, если не на второй... :(
 
Это нужно гуглить на предмет семафоров. Примитивная реализация следующая: Когда процесс хочет изменять файл, он создаёт файл, назовём его для краткости файл-семафор. После окончания изменений файл-семафор убивается. Соответственно когда дугой процесс хочет изменить файл, он проверяет наличие файла-семафора. Если он существует, то процесс не начинает изменять файл, а каким-то образом обрабатывает эту ошибку. А если нет, то создаёт файл-семафор и т.д.
Да не надо вручную это делать (а вдруг два процесса одновременно начнут семафор создавать?). Есть функция [m]flock[/m], она все сделает, можно даже рассчитывать что оптимальным для ОС образом.
на поисковых системах? до меня дошел слух, что поисковики "не любят" антикеширующие заголовки... правда ли это?
Неправда.

народ, ну я же серьезно спрашиваю.
Даже если бы у меня был сайт с посещаемостью 5 селовек в сутки и имел всего 5 страниц контекнта - это не повод для НЕ ЗНАНИЯ.
Я же учусь.. а как учиться, если на простой прямой вопрос некоторые личности начинают ОФФТОПИТЬ, говоря что раз у меня непосещаемый сайт то мне это не нужно. Откуда можно узнать насколько мой сайт посещаем? И может я не для себя делаю вообще
Для кеширования есть спец. софт, ставится впереди Апача, ему прописывается какие страницы при каких условиях и как часто перезапрашивать.
Но смысл это имеет только при _очень_ большой посещаемости.
 
спасибо, буду разбираться

Для кеширования есть спец. софт, ставится впереди Апача
ну это же я так понимаю для кеширования полностью страницы? а мне нужно кешировать только некоторые части, можно назвать их - блоками. Например - (НАПРИМЕР) - последние сообщения из форума. Создается кеш, и если файлмтайи больше 30 минут - обновляем.

Спасибо за ответы,
Но все же хотелось услышать - как лучше кешировать переменные? создавать кеш-файл вида:
<?php
# cache file. last update TIME by IP
$var1="blablabla";
$array_big = сложный массив массив;
$somethin = "blah blah blah";
?>
Верно?
 
svetasmirnova
в смысле - сохранять РНР файл с переменными :)
Я имел ввиду в каком виде их лучше записывать?
$var = "value"
||
$cache_vars['module_name']['var_name'] = "value";
как грамотнее? (во втором случае имя модуля и имя переменной будет выдано при сохранении кеша)
 
Правильнее не генерировать скриптами PHP скриптов.
Собственно, из-за подобных высказываний я и сказал, что рано тебе ещё к хомяку такие сложности прикручивать.
 
Spear
Ни в каком. На том месте, где идёт подстановка переменной, подставляешь её значение и всё.
SiMM
Пускай учится: на сложном оно интереснее.
 
Сверху