Система имеет сложную систему кэширования, процесс которого разделен на несколько этапов. Целью кэширования является снижение нагрузки на ядро системы при обработке одинаковых блоков кода. Если в странице сайта все используемые макросы могут быть закэшированы, то результатом выполнения первого обращения к отдельной странице сайта станет статический HTML файл. Он будет размещен в папке Cache и будет отдаваться пользователям при всех последующих обращениях к той же странице без обработки системой, что значительно сэкономит время и ресурсы сервера.
Любая макроподстановка может быть специально исключена разработчиком из процесса кэширования. Например, если на базе макроса $News[]$ необходимо сделать ротируемое на странице объявление (баннер), можно использовать ключ sort: random для выбора случайного объявления из справочника. Для того, чтобы при каждом обращении к странице можно было видеть новый баннер необходимо запретить кэширование данной макроподстановки. Это делается через ключ nocache: on.
Ключ nocache (принимает значения "on", "yes", или "1") означает запрет на кэширование того макроса в который он вставлен. Он может использоваться для любой макроподстановки.
Кэшироваться могут не все макроподстановки. Следующие макроподстановки никогда не кэшируются системой (c 4.38 и выше):
- AuthBlock
- Captcha
- Cookie
- CompareTable
- CurrencyRate
- Feeder
- Form
- Forum
- IncrementField
- IPToCity
- LMERate
- PollResult
- RemoteText
- RegistrationConfirm
- Sape
- Sendmail
- ShoppingCart
- SMSPayment
- Stars
- UserProfile
- XSLTTransform
- IN_...
Следствия
- Для очень нагруженных страниц с огромной посещаемостью следует учитывать, что перечисленные подстановки будут обрабатываться каждый раз при запросе страницы заново, что будет задействовать ресурсы сервера.
- Использование ключа nocache в этих макросах не окажет никакого влияния на их работу.
Узнать какие макросы не закэшировались также можно посмотрев в папку Cache. В файлах с расширением .raw такие макросы будут видны в неизменном виде.