🔎

Кешування сторінок вебсайту PHP

Вебсторінка складається з декількох секторів, які завантажуються обробкою інформації на PHP. Як створити просту систему кешування для оптимізації завантаження сайту?
php
2 відповіді
  • Дмитро
    Якщо на вебсайті не використовується динамічне створення інформації в залежності від певних параметрів, а зміст сторінки формується виключно статично, можна використовувати описаний далі метод кешування.
    $cache_file = $_SERVER['DOCUMENT_ROOT'].'/cache/'.md5($_SERVER['REQUEST_URI'] ).'.tmp';
    if (file_exists($cache_file)) {
    exit(require_once($cache_file));
    } else {
    ob_start( );

    /*
    * Зміст сторінки
    */

    // Зберігаємо в кеш-файл
    $fopendb = fopen($cache_file, 'w+');
    flock($fopendb, LOCK_EX);
    fwrite($fopendb, ob_get_contents());
    flock($fopendb, LOCK_UN);
    fclose($fopendb);
    ob_end_flush();
    }
    Суть наступна:

    1. В директорії cache зберігаємо файл із повністю сформованою інформацією. Назва файлу є md5 від URL.

    2. Перевіряємо існування файлу кешу: якщо існує - завантажуємо його зміст, інакше виконуємо завантаження сторінки з паралельним зберіганням інформації у пам’ять, яку збережемо у файл кешу.

    Обов’язково після внесення будь-яких змін в інформацію необхідно очистити директорію з кешованими файлами, що робить наступна функція:
    function clear_cache() {
    $opendir = opendir($_SERVER['DOCUMENT_ROOT'].'/cache/');
    while (($element = readdir($opendir)) !== false) {
    if ($element != '.' && $element != '..') {
    @chmod($_SERVER['DOCUMENT_ROOT'].'/cache/'.$element, 0777);
    unlink($_SERVER['DOCUMENT_ROOT'].'/cache/'.$element);
    }
    }
    closedir($opendir);
    }
    В результаті такого простого рішення можна суттєво оптимізувати завантаження сторінок вебсайту.
  • Денис