[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кеширование
bposter
Всем привет, нашел скрипт кеширования который отлично работает, вот сам скрипт



<?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.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

Спустя 5 часов, 44 минуты, 33 секунды (9.10.2012 - 15:53) vagrand написал(а):
Игорь_Vasinsky
Цитата
у меня страница строиться из 10 отдельных динамических "блока" - мне что для каждого блока процедуру кеширования проводить?


Ну давай рассуждать логически - у тебя например страница, для формирования которой выполняется N запросов к БД и еще какие-то вычисления в самом коде. Вот ты ее закешировал всю, а затем изменились какие-то данные, отображаемые на этой странице и вместо того что бы проэкспайрить кеш какого-то одного блока или запроса, ты экспайриш кеш всех блоков и/или запросов, которые выполняются на странице.

Ну и что по твоему это верный подход?


_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.