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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопрос по теории кэширования

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
garvey
Отправлено: 11 Июня, 2010 - 10:13:54
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Работаю на php уже около года, но делал сайты всегда без кэширования. И вот решил двинуться вперед. Подскажите, как правильно делать кэширование. Какие библиотеки использовать. Спасибо.
 
 Top
isle
Отправлено: 11 Июня, 2010 - 12:49:24
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




А где кешировать и что - не ясно... Помогите в том - не знаю в чем, напишите то - не знаю что... Ха-ха

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

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 ставить нужно вручную на кеш, здесь это опускаю.
 
 Top
garvey
Отправлено: 11 Июня, 2010 - 13:27:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Кэширование страниц. С буферизацией данных.
 
 Top
isle
Отправлено: 11 Июня, 2010 - 13:31:56
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




В ОЗУ тоже как-то кешировал и жал данные, но опыта у самого пока еще мало, могу наврать... Сам советовать пока ничего не буду. Растерялся Эх, тема актуальная - тоже бы с удовольствием поучился.
 
 Top
Phantik
Отправлено: 11 Июня, 2010 - 13:54:25
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Вообще грубо можно кэширование разделить на 3 типа:

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

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

3) Внешние модули для кэширования типа memcached Про него я ничего не знаю.
 
 Top
isle
Отправлено: 11 Июня, 2010 - 14:01:19
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




Phantik, как я понял, garvey интересуется именно буферизацией на php на сервере, а не в браузере, БД или ФТП. Сам одно время этим интересовался, но полгода назад для меня это было сложно, сейчас созрел для понимания... Радость Если есть опыт, приведите какой-нибудь простенький примерчик, чтоб неделю не гуглить впустую. Улыбка
 
 Top
Phantik
Отправлено: 11 Июня, 2010 - 14:28:33
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




На мой взгляд буферизация и кэширование это немного разные вещи. Хотя может я чего-то не догоняю. Буферизация, это когда страница посылается в браузер не по мере формирования, а сначала накапливается некий объем, после чего он отправляется в браузер целиком.
 
 Top
garvey
Отправлено: 11 Июня, 2010 - 15:02:19
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Да. вы правильно поняли. Только вот как это сделать?
 
 Top
JustUserR
Отправлено: 11 Июня, 2010 - 16:06:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




garvey пишет:
Только вот как это сделать?
В принципе кеширование со стороны web-сервера можно огранизовать следующим образом - во время изменения данных на какой-то странице на сайте вы производите ее генерацию в HTML-файл с учетом вставки динамических блоков - и когда пользователь запрашивает ее то выводите уже подготовленную статичеую версию из файла Решение вопроса с динамическими блоками можно сделать с помощью JS - вы выводите один и тот же статический код а дополнительые элементы управления уже гененируются автоматически


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB