Кэширование свойствС момента своего появления система oocms активно использует кэширование для ускорения загрузки страниц и снижения нагрузки на веб-сервер.
Каждая страница, описанная в oocms, может состоять из десятков различных свойств, каждое из которых отвечает за определенный элемент страницы: заголовок, таблицу стилей, меню, текст статьи и т. д. Многие свойства часто содержат подпрограммы на PHP или вызовы других свойств, обработка которых происходит при каждом обращении к такому свойству, замедляя загрузку страницы.
Задача новой системы кэширования — сокращение времени обработки свойств и уменьшение числа обращений к кэшу.
Введем понятие вида свойства. Каждое свойство может быть одного из следующих видов:
- динамическое,
- статическое,
- всегда динамическое,
- всегда статическое.
Для динамических свойств в кэш заносится «исходный текст» свойства. К примеру, свойство „title“, которое выводит в заголовок браузера название сайта и название страницы из свойства „header“
Сайт такой-то — <?=getItem("header")?> будет занесено в кэш «дословно», вместе с вызовом свойства „header“, которое происходит при каждом обращении к „title“.
Объявим теперь это свойство статическим, и тогда в кэш будет занесен результат обработки этого свойства. Для „title“ из предыдущего примера в кэш попадет такой текст: «Сайт такой-то — Название страницы», если свойство „header“ также является статическим. В этом случае свойство „header“ будет удалено из кэша, если к этому свойству не будет других обращений. Таким образом сокращается не только время обработки страницы, но и объем кэша.
Чтобы занести в кэш результат обработки свойства независимо от того, обращается ли оно только к статическим свойствам или нет, нужно сделать такое свойство всегда статическим. Другим полезным эффектом обладает всегда динамическое свойство: не только само такое свойство, но и все свойства, к которым оно обращается, заносятся в кэш в виде «исходного текста», даже если какие-то свойства объявлены статическими. Это может быть полезно для переопределения вида свойств при наследовании. |