Кеширование как реализовать проще всего

Тема в разделе "PHP", создана пользователем jcrush, 11 апр 2009.

Модераторы: latteo
  1. jcrush

    jcrush

    Регистр.:
    10 ноя 2006
    Сообщения:
    692
    Симпатии:
    55
    есть парсенный,html как бы проще всего реализовать кеширование данных?
     
  2. Jameson

    Jameson Читатель

    Заблокирован
    Регистр.:
    25 июн 2007
    Сообщения:
    406
    Симпатии:
    92
    Делать json_encode и в файлик

    p.s. напомнило:
     
  3. jcrush

    jcrush

    Регистр.:
    10 ноя 2006
    Сообщения:
    692
    Симпатии:
    55
    а пример готовый можно?
     
  4. best

    best

    Регистр.:
    12 апр 2006
    Сообщения:
    246
    Симпатии:
    54
    Перейти по ссылке
    Попробуй посмотреть сдесь. Уже есть много готовых решений. Чтото должно подойти.
     
  5. jID

    jID Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    106
    Симпатии:
    31
    PHP:
    <?php
    // в переменной $r будем хранить результат вывода (или его же из кэша)
    $r=<считываем из кэша>;
    $last_updated = <получаем время последнего обновления кэша>;
    // если кэш устарел (в примере 60 секунд * 60 минут * 24 часа = 1 сутки)
    if ((time()-strtotime($last_updated))>60*60*24) {
      
    // то формируем кэш
      
    $r.="новый кэш";
    }
    echo 
    $r;
    ?>
    Как ты будешь хранить кэш - дело твоё, можно в файлах, можно в БД.
     
    jcrush нравится это.
  6. jcrush

    jcrush

    Регистр.:
    10 ноя 2006
    Сообщения:
    692
    Симпатии:
    55
    т.е. если кеш устарел он запиывается новым или нет?
     
  7. jID

    jID Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    106
    Симпатии:
    31
    А, ну да, совсем забыл про запись нового)))
    Да, конечно, если пришлось формировать новый, то его нужно записать поверх старого.
     
  8. Zircool

    Zircool Создатель

    Регистр.:
    1 июн 2008
    Сообщения:
    35
    Симпатии:
    43
    В домашней директории создаем файлы .htaccess, start_cache.php, end_cache.php, а также папку с названием cache_files.

    Папке cache_files необходимо проставить атрибуты 777.

    Внутри .htaccess файла пропишите следующие строки:

    HTML:
    
    php_value auto_prepend_file /home/username/public_html/start_cache.php
    php_value auto_append_file /home/username/public_html/end_cache.php
    
    Строку /home/username/public_html/ необходимо заменить на путь к вашей домашней директории.

    В скрипт start_cache.php помещаем следующий код:

    PHP:
    <?php
    // раздел настроек, которые вы можете менять
    $settings_cachedir '/home/username/public_html/cache_files/';
    $settings_cachetime 3600//время жизни кэша (1 час)

    // код
    $thispage 'http://' $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    $cachelink $settings_cachedir.md5($thispage).".html";
    if (
    file_exists($cachelink)) {
        
    $cachelink_time filemtime($cachelink);

        if ((
    time() - $settings_cachetime) < $cachelink_time) {
            
    readfile($cachelink);die();
        }
    }

    ob_start();
    ?>
    Не забывайте исправлять путь /home/username/public_html/ на путь к вашей домашней директории.

    А следующий код поместите в скрипт end_cache.php:

    PHP:
     <?php
    $fp 
    fopen($cachelink'w');
    fwrite($fpob_get_contents());
    fclose($fp);
    ob_end_flush();
    ?>
    …вот, собственно, и все. Все ваши страницы будут кэшироваться на 3600 секунд. Этот параметр вы легко можете поменять в скрипте start_cache.php. Кэш страниц будет сохранен в папке cache_files. Файл start_cache.php инклудим в начале страницы а end_cache.php в конце страницы.
     
    alexz15 нравится это.
  9. VictorVi

    VictorVi Прохожие

    Если потом эти данные будут отдаваться пользователям, то самый простой вариант - реализовать кеширование средствами какого-нить шаблонизатора. Я обычно использую смарти (smarty.net). Там достаточно гибкий алгоритм кеширования. И ничего придумывать не надо :)
     
  10. jcrush

    jcrush

    Регистр.:
    10 ноя 2006
    Сообщения:
    692
    Симпатии:
    55
    а зачем такие сложности с htaccess?