Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Программируемая... 65009
Invision Power ... 64190
Организация зап... 63510
Модуль Forms 60371
Создание отчето... 60354
ТЕХНОЛОГИИ ДОСТ... 56648
Пример работы с... 53764
Создание потоко... 52495
Имитационное мо... 52078
Реклама
Сейчас на сайте
Гостей: 7
На сайте нет зарегистрированных пользователей

Пользователей: 13,062
новичок: AndeR
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Сравнение двух бинарных деревьев на Turbo Pascal + отчет
База данных - рабочее место кассира на Delphi + бд Access
Моделирование работы обрабатывающего участка цеха в GPSS

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
PHP - Простое кэширование
В данной статье рассматривается один из самых простых способов кэширования подкачиваемых файлов, 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 " (".$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;$i fclose($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 " (".$date.")";
}

Вот и все. Таким же образом можно кэшировать и SQL запросы. Используя этот механизм мне удалось уменьшить время создания главной страницы с 1.5 сек до 0.05 сек
Опубликовал Kest November 06 2008 19:32:39 · 0 Комментариев · 7580 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Правила программи...
Философия C++. Пр...
Zoom [Исходник на...
RAS
Пример создания W...
Приложение Клиент...
HTMLredaktor
Delphi 2005 для W...
Программирование ...
WAP версия сайта
Шкрыль А. - Разра...
Редактор анимаций
FileFind
DemoEdit [Исходни...
Pro-Download Sys...
Visual Studio 200...
Scrrlcaptoin
Генетический алго...
Plasma
Простой пример ка...

Топ загрузок
Приложение Клие... 100371
Delphi 7 Enterp... 82759
Converter AMR<-... 20046
Borland C++Buil... 11140
GPSS World Stud... 10701
Borland Delphi ... 8084
Turbo Pascal fo... 6968
Visual Studio 2... 4963
Калькулятор [Ис... 4314
FreeSMS v1.3.1 3510
Случайные статьи
Установка маршрути...
Ввод данных из окн...
Цель поисковой опт...
Wap сайты - раскру...
Что входит в Servi...
Передать содержимо...
ЭЛЕМЕНТЫ ПРОЦЕДУРЫ...
consult(X)
Введение
Альтернативы PDF
«Умный» массив
Конфигурирование в...
Машины VAX-11 и пр...
Многопоточные очереди
Планирование трафи...
ИЗЯЩНОЕ ВОССТАНОВЛ...
Игроки
2. Приведенные ниж...
настраиваемых в MSDSS
Информация о прода...
Реляционные отноше...
Конструкторы
Графический и HTML...
«Использование» ша...
Установка адаптера...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?