Как я кэширую веб-страницу в PHP?

Я записал встроенную команду Find в Acrobat 1.0 и работал над механизмом полнотекстового поиска для Acrobat 2.0 и 3.0. Программное обеспечение Most в той точке, которая обработала большой объем текста, имело способ определить местоположение точного совпадения отдельному слову или фразе и звонило, это Находит/Находит Затем. Это - то, что мы назвали им в Acrobat 1.0. Мы знали от запуска, что этого не было достаточно для обработки всех репозиториев документов, таким образом, нам был нужен способ просканировать через полный набор. Мы не могли использовать, Находят, так как это уже было в UI и установило поведение, таким образом, мы обосновались на Поиске. Решение было на основе немного больше, чем относительно маленький набор общих слов, которые передают действие.

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

alt text
(источник: yellowpagecity.com )

, но адвокаты подстрелил это - это было слишком близко. Мы не могли использовать лупу, поскольку у нас были функции масштабирования, связанные с этим. Мы пошли с биноклем.

12
задан user187580 10 October 2009 в 08:22
поделиться

5 ответов

Фактически вы можете сохранить вывод страницы до завершения сценария, а затем загрузить кеш в начале сценария.

пример кода:

<?php

$cachefile = 'cache/'.basename($_SERVER['PHP_SELF']).'.cache'; // e.g. cache/index.php.cache
$cachetime = 3600; // time to cache in seconds

if(file_exists($cachefile) && time()-$cachetime <= filemtime($cachefile)){
  $c = @file_get_contents($cf);
  echo $c;
  exit;
}else{
  unlink($cachefile);
}

ob_start();

// all the coding goes here

$c = ob_get_contents();
file_put_contents($cachefile);

?>

Если у вас много страниц, требующих этого кеширования, вы можете сделать это:

в cachestart.php :

<?php
$cachefile = 'cache/'.basename($_SERVER['PHP_SELF']).'.cache'; // e.g. cache/index.php.cache
$cachetime = 3600; // time to cache in seconds

if(file_exists($cachefile) && time()-$cachetime <= filemtime($cachefile)){
  $c = @file_get_contents($cf);
  echo $c;
  exit;
}else{
  unlink($cachefile);
}

ob_start();
?>

в cacheend.php :

<?php

$c = ob_get_contents();
file_put_contents($cachefile);

?>

Затем просто добавьте

include('cachestart.php');

в запуск ваших скриптов. и добавьте

include('cacheend.php');

в конец ваших скриптов. Не забудьте иметь папку с именем cache и разрешить PHP доступ к ней.

Также помните, что если вы выполняете полный кеш страницы, ваша страница не должна иметь специального отображения SESSION (например, отображать элементы ' bar или что-то в этом роде), потому что они также будут кешированы. Посмотрите на структуру для конкретного кэширования (переменная или часть страницы).

14
ответ дан 2 December 2019 в 07:22
поделиться

Используйте memcached . На этом сайте есть объяснение, как это сделать.

0
ответ дан 2 December 2019 в 07:22
поделиться

Используйте Squid или правильно обновите заголовки HTTP для кэширования браузера. Я не вижу необходимости создавать собственную версию кеширования на основе вопроса.

0
ответ дан 2 December 2019 в 07:22
поделиться

PEAR имеет пакет кэширования (на самом деле два):

http://pear.php.net/package/Cache и
http: //pear.php .net / package / Cache_Lite для небольших приложений

Однажды я использовал пакет Cache (первый) для кеширования запросов, и в то время он выполнял свою работу, насколько я помню.

0
ответ дан 2 December 2019 в 07:22
поделиться

В дополнение к ответу Мауриса я хотел бы указать на следующее:

Вы должны быть осторожны при использовании кэширования. Когда у вас есть динамические данные (что должно быть в случае использования php вместо статического html), вам необходимо аннулировать кеш при изменении соответствующих данных.

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

Обновление

Способ аннулирования кеша зависит от конкретного типа кэширования. Вы должны знать, какие файлы кеша принадлежат какой странице (и, возможно, введены пользователем). Когда данные изменяются, вы должны удалить кэшированный файл или удалить вывод страницы из структуры данных кэша.

Я не могу предоставить вам более подробную информацию об этом, не зная, какую реализацию вы используете для кэширования.

Другие люди предлагали, например, пакет Pear или memcached. У них есть необходимые функции для аннулирования всего кеша или его частей при изменении данных.

4
ответ дан 2 December 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: