Початкова сторінка

Микола Жарких (Київ)

Персональний сайт

?

Об’єкт SmerecashPage

Об’єкт SmerecashPage призначений для пошуку попередньо згенерованого (смерекешованого) HTML коду веб-сторінок і передачі даних клієнту. Від цього класу успадковується клас Page.

Поля

protected $PageSmerecasheable – значення логічного типу, котре дозволяє або забороняє смерекешування даної сторінки. Якщо смерекешування дозволено, при запиті сторінки робиться спроба відшукати в смерекеші попередньо згенерований код, а при генерації код сторінки записується у смерекеш. Якщо смерекешування заборонене, Смерека завжди виконує повний цикл генерації HTML коду веб-сторінки.

protected function CanSmerecashe()

Метод повертає логічне значення, котре дозволяє або забороняє смерекешування даної сторінки. Типово смерекешування дозволене, якщо його дозволяють глобальна змінна $GLOBALS['UseSmerecashe'] та значення поля PageSmerecasheable. Якщо в сеансі PHP встановлено об’єкт User (типово), то додатково викликається його метод AllowSmerecash().

Таким чином, управління смерекешем може здійснюватись на глобальному рівні, на рівні користувача та на рівні класу сторінки. При необхідності можна перекрити даний метод, щоб забезпечити специфічний режим смерекешування сторінок.

protected function Compress(&$Data)

Метод отримує HTML код веб-сторінки і стискає його алгоритмом gzip для того, щоб відіслати користувачу менший обсяг даних. Це стискання виконується після постобробки, при кожній пересилці сторінки користувачу (незалежно, була сторінка смерекешована чи ні). Стискання виконується за одночасного виконання всіх наступних умов:

  • це дозволено глобальною змінною CompressOutput;
  • клієнт готовий сприйняти gzip-дані;
  • MIME Type даних сторінки – HTML;
  • довжина вхідного потоку перевищує 20 кб (можна щось зекономити на його стисканні).

Функція повертає логічне значення – було застосовано стискання чи ні.

public function Display($Id = NULL)

Головний метод класу. В даному класі вона виконує роботу зі смерекешем. Якщо необов’язковий параметр $Id задано, функція виконує пошук у смерекеші сторінки із заданим ід-ом вершини і поточною мовною версією. Якщо цей параметр не задано, викликається метод PageURLInfo і пошук здійснюється за адресним рядком, згенерованим цим методом.

Якщо смерекешований код сторінки знайдено, він відсилається клієнту методом SendPage і робота Смереки на цьому закінчується; якщо код не знайдено, метод повертає значення False і стандартний цикл генерації сторінки продовжується.

protected function MIMEType()

Метод повертає рядок MIME Type для даної сторінки. За умовчанням метод вибирає це значення із таблиці smerecash. Нащадки класу можуть перевизначити цю поведінку.

public static function PageURLInfo()

Метод аналізує параметри запиту сторінки і формує адресний рядок із тих елементів, які визначають зміст сторінки.

protected function SendHeader($Size, $CanCache, $LastUpd)

Відсилає клієнту HTTP-заголовки відповідно до параметрів $Size (розмір даних), $CanCache (можливість HTTP-кешування), $LastUpd (дата останньої модифікації даних).

protected function SendPage($R, $D)

Метод одержує дані, які треба відіслати користувачу ($R) та дату останньої модифікації ($D). При потребі функція виконує постобробку одержаних даних (типова задача, яку виконує постобробка – вставка числа завантажень даної сторінки, яка виконується при кожному відсиланні даних клієнту). Після цього робиться спроба стиснути дані методом Compress. При успішному стисканні клієнту відсилаються відповідні HTTP-заголовки. Після цього клієнту відсилається потік даних.