<?php
$url = $_SERVER["SCRIPT_NAME"];
$break = Explode('/', $url);
$file = $break[count($break) - 1];
$cachefile = 'cached-'.substr_replace($file ,"",-4).'.html';
$cachetime = 18000;
// Обслуживается из файла кеша, если время запроса меньше $cachetime
if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) {
echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n";
include($cachefile);
exit;
}
ob_start(); // Запуск буфера вывода
?>
<html>
<head>
<title>Expert Vision</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
Контент Контент Контент Контент Контент
</body>
</html>
<?php
// Кешируем содержание в файл
$cached = fopen($cachefile, 'w');
fwrite($cached, ob_get_contents());
fclose($cached);
ob_end_flush(); // Отправялем вывод в браузер
?>
Все бы хорошо но как быть с счетчиком посещаемости или с личным профилем если на сайте есть авторизация ?
Спустя 12 часов, 41 минута, 20 секунд (9.10.2012 - 08:47) vagrand написал(а):
Очень просто, кешировать надо не всю страницу а отдельные ее элементы, а еще лучше кешировать запросы в к БД и сложные для вычисления участки кода.
Спустя 12 минут, 33 секунды (9.10.2012 - 08:59) Игорь_Vasinsky написал(а):
Цитата |
чень просто, кешировать надо не всю страницу |
да ну)
у меня страница строиться из 10 отдельных динамических "блока" - мне что для каждого блока процедуру кеширования проводить?
![biggrin.gif](http://phpforum.su/html/emoticons/biggrin.gif)
мне проще всё собрать и превратить в статику.
http://phpforum.ru/index.php?showtopic=609...%F0%EE%E2%E0%ED
Спустя 1 час, 9 минут, 4 секунды (9.10.2012 - 10:08) bposter написал(а):
Цитата (vagrand @ 9.10.2012 - 05:47) |
Очень просто, кешировать надо не всю страницу а отдельные ее элементы, а еще лучше кешировать запросы в к БД и сложные для вычисления участки кода. |
Я изначально тоже так подумал и закешировал тока див контейнер с контентом и боковыми колонками (right, left ) но тогда все что ниже а это footer остается за бортом тоесть не выводится
![sad.gif](http://phpforum.su/html/emoticons/sad.gif)
Спустя 5 часов, 44 минуты, 33 секунды (9.10.2012 - 15:53) vagrand написал(а):
Игорь_Vasinsky
Цитата |
у меня страница строиться из 10 отдельных динамических "блока" - мне что для каждого блока процедуру кеширования проводить? |
Ну давай рассуждать логически - у тебя например страница, для формирования которой выполняется N запросов к БД и еще какие-то вычисления в самом коде. Вот ты ее закешировал всю, а затем изменились какие-то данные, отображаемые на этой странице и вместо того что бы проэкспайрить кеш какого-то одного блока или запроса, ты экспайриш кеш всех блоков и/или запросов, которые выполняются на странице.
Ну и что по твоему это верный подход?
_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)