Скрипт кешування сайту

Не секрет, що статичні сайти вантажаться швидше динамічних. Це відбувається тому, що статичний сайт видає користувачеві в браузер себе "одразу як він є", в той час як динамічний сайт попередньо обробляється на сервері, робить запити до бази даних. Суть кешування на стороні сервера полягає в тому, щоб записати все, що відбувається на сервері, у файл, зберегти його і при подальшому обігу цього, або будь-якого іншого користувача до цієї сторінки просто видати йому статичну копію.

В результаті ми отримаємо не тільки прискорення завантаження сторінок, але і знизимо навантаження на сервер і базу даних. Реалізуємо найпростіший, на мій погляд, спосіб буферизації.

Нам знадобляться функції:
file_exists () - перевіряє наявність вказаного файлу або каталогу.
readfile () - дозволяє прочитати дані з файлу. Тобто ця функція буде читати наш статичний файл
ob_start () - включає буферизацію виводу. Тобто все, що відбуватиметься після цієї функції, буде збережено в буфер (тимчасове сховище)
ob_get_contents () - отримує вміст буфера виводу.
ob_end_flush () - відправляє вміст буфера виведення користувачеві (якщо воно є), очищає його і вимикає буферизацію виводу.
fopen - відкриває файл або URL
fwrite () - записує вміст у файл.
fclose () - закриває файл.
На сервері попередньо створимо папку caсhe (назву можна придумати будь-допустиме)

Отже, приступимо:
1. На самому початку нашої PHP - сторінки пишемо:

<? Php
if (file_exists ('cache / index_'. $_GET ["page "].'_'.$_GET [" id "].'. cache ')) {
readfile ('cache / index_'. $_GET ["page "].'_'.$_GET [" id "].'. cache '); exit ();}
ob_start ();
/ / Далі йде будь-який ваш html-php код
include ("includes / bd.php");
<!  DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Transitional / / EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
і т.д. і т.п.
?>


Якщо у нас існує файл index_xx_yy.cache, то просто зчитуємо вміст файлу, виводимо на екран і зупиняємо будь-які подальші дії на сторінці. Тут xx - це значення змінної $ _GET ["page"] (наприклад номер сторінки), уу - це значення змінної $_GET ["id"] (наприклад якийсь параметр, що формує нашу сторінку). Якщо ж ні, в папці кеш нашої статичної копії включаємо буфер і записуємо в нього все, що відбувається на сторінці.

2. У самому кінці після тега </ html>:
<? Php $buffer = ob_get_contents ();
ob_end_flush ();
$fp = fopen ('cache / index_'. $_GET ["Page "].'_'.$_ GET [" id "].'. cache ',' w ');
fwrite ($fp, $buffer);
fclose ($fp);


Ми записуємо в $buffer вміст буфера, після зупиняємо буферезацію і очищаємо його. Потім відкриваємо файл index_xx_yy.cache / / (якщо його немає на сервері, то створюємо, за це відповідає параметр 'w' у ф-ції fopen), записуємо в файл $fp значення $ buffer і закриваємо його. Тепер у нас php - сторінка буде оброблятися на сервері 1 раз з першим відвідувачем, а для всіх наступних виводити статичний html-код.
Що буде якщо параметрів $_GET ["page"] і $_GET ["id"] не існує? (Якщо завантажена сторінка index.php без змінних $_GET). Файл index_xx_yy.cache набуде вигляду index__.cache (після index подвійна риса), що в принципі є нормальним іменем файлу:)



3. Тепер про те, як очистити кеш. Це необхідно коли ви додали щось нове на сторінку або на сайт, у вас з'явився новий запис у гостьовій. Просто додайте в потрібному місці (наприклад після того, як запис у гостьовій була додана в базу даних):

unlink ('cache / index_'. $_GET ["page "].'_'.$_GET [" id "].'. cache ');


Ця функція видалить кеш файл index_xx_yy.cache

Пам'ятайте:
Папка cache повинна бути доступна на запис. Якщо передбачається виводити якісь випадкові нотатки, варто проводити буферизацію блоками і підключати БД до сторінки до включення буферизації, тобто ви повинні визначити що повинно кешуватися і кешувати тільки потрібні ділянки, створюючи файли в папці кеш з назвою ваших блоків. В принципі теж нічого складного, якщо ви зрозуміли це урок, зробити блокову буферизацію не складе великих труднощів.

От і все, що потрібно для найпростішої реалізації кешування сайту на стороні сервера. Всім удачі, коменти вітаються.

 
Останні статтіВипадкові статті по темі

Newbie.com.ua сайт на якому розміщено інформацію про хостинги, різні CMS Joomla, Wordpress, Typo3, та інші. Корисна інформація про PHP та CSS та багато іншого, що стане в нагоді як досвідченим майстра так і початківцям, які зможуть досягти From newbie to pro. Навіьт не маючи спеціалізованих знань, ви дізнаєтесь, що таке онлайн бізнес, про створення сайтів, розкрутку вебсайтів та їх монетизацію. Ви знатимете, що значить СЕО та пошукова оптимізація. Все це на нашому інтернет-журналі.