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

Spear

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

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

Ещё хотел уточнить такой момент:
я как-то спрашивал, как можно пердотвратить ошибку кеширования (например если ктото обратился к файлу в момент его создания или ещё чего). Мне сказали что нужно "юзать" флаги, которые помогут узнать что файл создался полностью. Какие флаги они имели ввиду?
 

master_x

Pitavale XXI wieku
Spear
странный вопрос... ты что, всерьез полагаешь, что кто-то будет в один момент запрашивать страницу а кто-то будет в нее писать? ну так ты ошибаешься... для этого как минимум надо иметь штаб блоггеров и сайт с нехилой посещаемостью
 

svetasmirnova

маленький монстрик
master_x
Вопрос логичный. Мне вот странно, что многие о такой возможности предпочитают забывать.
 

Spear

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

svetasmirnova

маленький монстрик
Вопрос просто сложный и ответа в 2 слова на него нет. Вообще самое быстрое - это статика. Соответственно и нужно стремиться к тому, чтобы в кеше был только html. Другое дело, что бывают данные, которые обновляются при каждой загрузке страницы.
По поводу
>Ещё хотел уточнить такой момент:
Это нужно гуглить на предмет семафоров. Примитивная реализация следующая: Когда процесс хочет изменять файл, он создаёт файл, назовём его для краткости файл-семафор. После окончания изменений файл-семафор убивается. Соответственно когда дугой процесс хочет изменить файл, он проверяет наличие файла-семафора. Если он существует, то процесс не начинает изменять файл, а каким-то образом обрабатывает эту ошибку. А если нет, то создаёт файл-семафор и т.д.

Прошу обратить внимание, что ключевое слово здесь примитивная
 

maugly

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

// 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");

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

Steamroller

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

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

Spear

почемучка
спасибо, буду разбираться

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

Спасибо за ответы,
Но все же хотелось услышать - как лучше кешировать переменные? создавать кеш-файл вида:
<?php
# cache file. last update TIME by IP
$var1="blablabla";
$array_big = сложный массив массив;
$somethin = "blah blah blah";
?>
Верно?
 

Spear

почемучка
svetasmirnova
в смысле - сохранять РНР файл с переменными :)
Я имел ввиду в каком виде их лучше записывать?
$var = "value"
||
$cache_vars['module_name']['var_name'] = "value";
как грамотнее? (во втором случае имя модуля и имя переменной будет выдано при сохранении кеша)
 

SiMM

Новичок
Правильнее не генерировать скриптами PHP скриптов.
Собственно, из-за подобных высказываний я и сказал, что рано тебе ещё к хомяку такие сложности прикручивать.
 

svetasmirnova

маленький монстрик
Spear
Ни в каком. На том месте, где идёт подстановка переменной, подставляешь её значение и всё.
SiMM
Пускай учится: на сложном оно интереснее.
 
Сверху