^cache[файл]
^cache[файл](число секунд){код}
^cache[файл](число секунд){код}{обработчик проблем} [3.1.2]
^cache[файл][дата устаревания]{код}
^cache[файл][дата устаревания]{код}{обработчик проблем} [3.1.2]
^cache[] = дата устаревания [3.1.5]
Оператор сохраняет строку, которая получится в результате работы кода. При последующих вызовах обычно происходит считывание ранее сохраненного результата вместо повторного вычисления, что сильно экономит время обработки запроса и снижает нагрузку на серверы.
Крайне рекомендуется подключать модули (^use[…]) изнутри кода оператора cache, а не делать это статически (@USE). По возможности следует работать с базой данных (^connect[…]) также внутри кода оператора cache - это существенно снизит нагрузку на SQL-сервер и повысит производительность сайтов.
Файл - имя файла-кеша. Если такой файл существует и не устарел, то его содержимое выдается клиенту, если не существует - выполняется код, и результат сохраняется в файл с указанным именем.
Число секунд - время хранения результата работы кода в секундах. Если это число равно нулю, то результат не сохраняется, а файл с ранее сохраненным результатом уничтожается.
Дата устаревания - дата и время, до которого хранится результат работы кода. Если она в прошлом, то результат не сохраняется, а файл с предыдущим сохраненным результатом уничтожается.
Код - код, результат которого будет сохранен.
Обработчик проблем - здесь можно обработать проблему, если она возникнет в коде. В этом отношении оператор похож на try, см. раздел «Обработка ошибок». В отличие от try можно задать $exception.handled[cache]- это дает указание Parser обработать ошибку особенным образом: достать из файла ранее сохраненный результат работы кода, проигнорировав тот факт, что этот результат устарел.
Для принудительного удаления файла-кеша можно использовать:
^cache[файл]
Внутри кода допустимы команды, изменяющие время хранения результата работы кода:
^cache(число секунд)
^cache[дата устаревания]
Берется минимальное время хранения кода.
Текущую дату устаревания можно узнать, вызвав:
$expire_date[^cache[]]
Пример ^cache[/data/cache/test1](5){
Нажимайте reload,
меняется каждые 5 секунд: ^math:random(100) }
Изменение времени хранения
^cache[/data/cache/test2](5){
по ходу работы выяснилось,
что страницу сохранять не нужно: ^cache(0)
}