Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вопрос по теории кэширования
Форумы портала PHP.SU » PHP » Программирование на PHP » Вопрос по теории кэширования

Страниц (1): [1]
 

1. garvey - 11 Июня, 2010 - 10:13:54 - перейти к сообщению
Работаю на php уже около года, но делал сайты всегда без кэширования. И вот решил двинуться вперед. Подскажите, как правильно делать кэширование. Какие библиотеки использовать. Спасибо.
2. isle - 11 Июня, 2010 - 12:49:24 - перейти к сообщению
А где кешировать и что - не ясно... Помогите в том - не знаю в чем, напишите то - не знаю что... Ха-ха

В БД еще сам толком не копался, поэтому с временными таблицами привести пример пока не могу вот так навскидку. А на ФТП я делаю так:

CODE (htmlphp):
скопировать код в буфер обмена
  1.   if (is_file($file)) {
  2.         #Проверяем наш кеш
  3.         $stat = stat($file); $LastModif = $stat['mtime']; $size = $stat['size']; #Статистика кеша.
  4.         if ($LastModif< $ism['block_cats_numitems_cash'] && $size>999) {
  5.           @include($file); #Берем данные из кеша.
  6.           if ($cash_categories && trim($cash_categories)!='') return $cash_categories;
  7.           else $check = true; #Запускаем скрипт на выполнение, если кеш пустой (первый запуск, либо ошибка записи скрипта в кеш и т.д.)
  8.         } else $check = true;
  9.   } else {$fp = fopen($file,'w'); fclose($fp); $check = true;}
  10.  
  11. ...
  12.  
  13.   if ($check) {
  14.     #Выполняем наш скрипт, если кеша нет или его время вышло.
  15.   }
  16.  
  17.   if (is_file($file)) {
  18.         #Загоняем всё в кеш.
  19.         $dump = var_export($out,true);
  20.         $dump = "<?php\n\n\$cash_categories = $dump;\n\n?>";
  21.         if (!@file_put_contents($file,$dump)) echo '<div>Check CHMOD 0777!</div>';
  22.   } else echo 'Problem creat or write cash-file';
  23.  


Пример из моего модуля... CHMOD у всех почти выключен, также и через подключение ФТП его тоже нельзя изменить (хостеры для своей безопасности все такие рюшки выключают), поэтому права 0777 ставить нужно вручную на кеш, здесь это опускаю.
3. garvey - 11 Июня, 2010 - 13:27:21 - перейти к сообщению
Кэширование страниц. С буферизацией данных.
4. isle - 11 Июня, 2010 - 13:31:56 - перейти к сообщению
В ОЗУ тоже как-то кешировал и жал данные, но опыта у самого пока еще мало, могу наврать... Сам советовать пока ничего не буду. Растерялся Эх, тема актуальная - тоже бы с удовольствием поучился.
5. Phantik - 11 Июня, 2010 - 13:54:25 - перейти к сообщению
Вообще грубо можно кэширование разделить на 3 типа:

1) Кэширование браузером. Тут браузер может управлять кэшированием по своему усмотрению, но при этом разработчик сайта может влиять на это управление через HTTP заголовки.

2) Кэширование СУБД. Выделяется некоторая память которая хранит результаты запросов. И при очередном запросе сама определяет выполнять его(запрос) заново или выдать результат из памяти.

3) Внешние модули для кэширования типа memcached Про него я ничего не знаю.
6. isle - 11 Июня, 2010 - 14:01:19 - перейти к сообщению
Phantik, как я понял, garvey интересуется именно буферизацией на php на сервере, а не в браузере, БД или ФТП. Сам одно время этим интересовался, но полгода назад для меня это было сложно, сейчас созрел для понимания... Радость Если есть опыт, приведите какой-нибудь простенький примерчик, чтоб неделю не гуглить впустую. Улыбка
7. Phantik - 11 Июня, 2010 - 14:28:33 - перейти к сообщению
На мой взгляд буферизация и кэширование это немного разные вещи. Хотя может я чего-то не догоняю. Буферизация, это когда страница посылается в браузер не по мере формирования, а сначала накапливается некий объем, после чего он отправляется в браузер целиком.
8. garvey - 11 Июня, 2010 - 15:02:19 - перейти к сообщению
Да. вы правильно поняли. Только вот как это сделать?
9. JustUserR - 11 Июня, 2010 - 16:06:46 - перейти к сообщению
garvey пишет:
Только вот как это сделать?
В принципе кеширование со стороны web-сервера можно огранизовать следующим образом - во время изменения данных на какой-то странице на сайте вы производите ее генерацию в HTML-файл с учетом вставки динамических блоков - и когда пользователь запрашивает ее то выводите уже подготовленную статичеую версию из файла Решение вопроса с динамическими блоками можно сделать с помощью JS - вы выводите один и тот же статический код а дополнительые элементы управления уже гененируются автоматически

 

Powered by ExBB FM 1.0 RC1