Реклама на сайте  Реклама   
  Портал для веб-мастера: Учебники, скрипты, статьи, html-шаблоны, flash-исходники, каталог шрифтов, форумы...
Все для веб-мастера: статьи, учебники, шрифты, e-books
Навигация
  Главная
  Исходники
  Шаблоны
  Галерея
  Шрифты
  E-books
  Скрипты
  Статьи
  E-mail
  Хостинг

Рекомендуем


Makita 2450 цена. Makita hr 2450 цена.

Работа для веб-мастера

О статье:
Опубликована: 07.07.05
Прочтений: 6299
Символов: 3374
Размер шрифта:
Все для веб-мастера: статьи, учебники, шрифты, e-books
 
Статьи » PHP » PHP - Простое кэширование   


PHP - Простое кэширование

  • Автор: Mike
  • Источник: www.mike.nov.ru
  • Версия для печати
  • В данной статье рассматривается один из самых простых способов кэширования подкачиваемых файлов, SQL запросов и других медленно создаваемых частей ваших страниц. Язык программирования: PHP

    Что должно быть на главной странице ?? Правильно, там должно быть понемножку от каждого раздела сайта. И конечно Ваша страница строится автоматически, исходя из содержимого форумов, новостных лент и других разделов сайта.

    Сколько SQL запросов выполняется при загрузке главной страницы ?? Сколько блоков подкачивается с других сайтов ??

    Сейчас мы рассмотрим простой и эффективный способ кэширования данных такого рода.

    В качестве примера рассмотрим случай импорта новостей с внешнего сервера: http://news.novgorod.ru/ultramode.txt

    Наша задача получить этот файл, обработать его и вывести его пользователю. Программа делающая это, выглядит следующим образом:

    <?
    $d=@file("http://news.novgorod.ru/ultramode.txt");
    for ($i=0;$i<11;$i++) {
    $msg=$d[2+$i*8];
    $url=$d[3+$i*8];
    $date=$d[4+$i*8];
    print "<a href='http://news.novgorod.ru".trim($url)."'>";
    print trim($msg)." (".$date.")";
    }
    ?>

    При каждой загрузке нашей страницы происходит обращение к внешнему серверу news.novgorod.ru, оттуда по протоколу HTTP скачивается файл ultramode.txt. А теперь представим ситуацию, что сервер находится на другом конце планеты и соединение, а тем более передача файла занимает достаточно больше время. Или более того, сервер может быть временно недоступен.

    Вывод. Зачем каждый раз подгружать файл ultamode.txt, если новости обновляются не чаще одного раза в два-три часа?? Правильно. Надо кэшировать.

    А делать мы это будем очень просто. Как вы могли заметить, в первой строке файла хранится комментарий. Комментарий нам не нужен и на его месте можно замечательно разместить дату последнего обновления файла.

    Алгоритм работы следующий:

    • Считываем кэшированную версию.
    • Если кэшированная версия устарела, то на ее место считываем файл http://news.novgorod.ru/ultramode.txt, заменяем первую строку на текущее время и сохраняем в кэш.
    • Оформляем и выводим данные пользователю.

    Ниже приведен код проделывающий все это:

    <?
    // считываем файл из кэша
    $d=@file("/tmp/news.cache");
    $fs=trim($d[1]);
    // Если файл не обновлялся 3600 секунд (1 час) или файл пуст,
    // то обновляем его
    if (intval($d[0])$d=@file("http://news.novgorod.ru/ultramode.txt");
    $fs=trim($d[1]);
    // Сохраняем новую версю в кэше
    if (!empty($fs)) {
    $fw=fopen("/tmp/news.cache","wt");
    flock($fw, LOCK_EX);
    // В первую строку запишем текущее время
    fputs($fw,time()."n");
    // Сохраним остальные строки
    for ($i=1;$ifclose($fw);
    }
    // Если, почему-то, файл не был скачан,
    // то воспользуемся кэшированной версией
    else $d=@file("/tmp/news.cache");
    }
    // Вывод данных
    for ($i=0;$i<11;$i++) {
    $msg=$d[2+$i*8];
    $url=$d[3+$i*8];
    $date=$d[4+$i*8];
    print "<a href='http://news.novgorod.ru".trim($url)."'>";
    print trim($msg)." (".$date.")";
    }
    ?>

    Вот и все. Таким же образом можно кэшировать и SQL запросы. Используя этот механизм мне удалось уменьшить время создания главной страницы с 1.5 сек до 0.05 сек.

    Оглавление | Наверх
    охладитель воды и цена тепловой насос . Продажа нефтепродуктов доставка дизельного топлива спб. . чип тюнинг двигателя.
     
    Советуем!



    Счетчики


    На сайте Online:
    WMate.ru © 2004 - 2012
       Дизайн: Мурашов Олег
       CMS: PhpCh v 0.2
       Время выполения скрипта: 0.012