Проблема не является проблемой Zend Framework. Речь идет о направлении клиента (по всей вероятности, в веб-браузер) кешировать контент на его стороне, чтобы в следующий раз, когда ему это понадобилось, ему не нужно было запрашивать его, а серверу не приходилось его доставлять.
Обычно это выполняется путем отправки заголовков кэша с сервера на клиент. Точные заголовки, которые вам нужно отправить, зависят от того, как долго вы хотите, чтобы браузер кэшировал. Поиск Google покажет вам это.
В «стандартном» приложении Zend Framework эти внешние ресурсы javascript и css находятся в папке public
вашего приложения и обслуживаются непосредственно вашим веб-сервером. Zend Framework никогда даже не трогает их. В результате метод отправки этих заголовков кэша будет зависеть не от Zend Framework, а от вашего веб-сервера.
Например, в Apache, если у вас есть модуль mod_expires, сам Apache может получить команду отправлять правильные заголовки кэша. Добавьте что-то вроде этого в каталог .htaccess
в public/assets
:
ExpiresDefault "access plus 1 month"
Подробнее см. В документации mod_expires .
Конечно, когда вы обновляете какой-либо контент в этом каталоге public/assets
, вы хотите, чтобы все клиенты запрашивали новый контент, а не повторно использовали кэшированный контент. Изменение URL запрошенного ресурса путем добавления строки запроса - что-то вроде изменения с http://example.com/assets/js/myscript.js
на http://example.com/assets/js/myscript.js?v=20120223
- приведет к новой загрузке.