Как кэшировать статический контент (css, images, js files) в CakePHP2?

Мне нужно установить некоторые HTTP-заголовки «Expires», «Cache-Control», «Last-Modified», для ресурсов в виде файлов CSS, файлов изображений, js-файлов и т. Д. (Содержимое Webroot).

Я читал, что есть некоторые функции, через

Configure::write('Asset.timestamp', true); // In core.php 

и метод assetTimestamp класса Helper.

Теперь вопрос: как он используется?

Я прочитал код HtmlHelper и в методе css, строка 361:

 $url = $this->assetTimestamp($this->webroot($path)); 

Решаемые.

Прежде всего, вы должны рассмотреть возможность сделать это через Apache. Вы можете посмотреть это руководство: http://httpd.apache.org/docs/2.2/caching.html

Дело в том, что у CakePHP есть способ сделать это. И это очень хорошо.

Я объясню это для файлов CSS. Конечно, можно использовать и для контента JS.

1) В вашем файле core.php (в приложении / config /) раскомментируйте эту строку:

 Configure::write('Asset.filter.css', 'css.php'); 

Эта строка указывает CakePHP направить все запросы к файлам CSS с помощью этого сценария «css.php». Как следует из названия, это фильтр. Там мы можем делать все, что захотим.

2) Создайте этот файл css.php. Вы должны создать его под именем app / webroot /

Сделайте там, вы можете взять файл, который запрашивает браузер, и применить некоторые кеширующие HTTP-заголовки.

Что-то вроде:

 $filepath = CSS . $regs[1]; //There are some variables that are can be used in this script, take a look to de docs. $output = file_get_contents($filepath); header("Date: " . date("D, j MYG:i:s ", $templateModified) . 'GMT'); header("Content-Type: text/css"); header("Expires: " . gmdate("D, d MYH:i:s", time() + DAY) . " GMT"); //WEEK or MONTH are valid as well header("Cache-Control: max-age=86400, must-revalidate"); // HTTP/1.1 header("Pragma: cache"); // HTTP/1.0 print $output; 

Это оно! Там ваш контент будет обслуживаться с указанными заголовками, и браузер узнает, что может их кэшировать.

Взгляни на:

http://www.bunchacode.com/programming/get-cakephp-build-in-css-compression-to-work/

Есть хорошая версия css.php, которая также минимизирует ее.