Кэширование страниц сайта для разработчика


Система имеет сложную систему кэширования, процесс которого разделен на несколько этапов. Целью кэширования является снижение нагрузки на ядро системы при обработке одинаковых блоков кода. Если в странице сайта все используемые макросы могут быть закэшированы, то результатом выполнения первого обращения к отдельной странице сайта станет статический 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 такие макросы будут видны в неизменном виде.