В Slim 3 используется дополнительный компонент PHP slimphp/Slim-HttpCache
для HTTP-кеширования. Вы можете использовать этот компонент для создания и возвращать ответы , которые содержат
Cache
, Expires
, ETag
и Last-Modified
заголовки, которые управляют временем хранения выходных
данных приложения, кэшами на стороне клиента. Возможно, вам нужно установить для параметра php.ini
«session.cache_limiter» пустую строку.
Выполните эту команду bash из корневого каталога вашего проекта:
composer require slim/http-cache
Компонент slimphp/Slim-HttpCache
содержит поставщик услуг и middleware.
Вы должны добавить оба приложения в это приложение:
// Регистрация поставщика услуг с контейнером
$container = new \Slim\Container;
$container['cache'] = function () {
return new \Slim\HttpCache\CacheProvider();
};
// Добавить middleware к приложению
$app = new \Slim\App($container);
$app->add(new \Slim\HttpCache\Cache('public', 86400));
// Создайте свой маршрутов приложение...
// Запуск приложения
$app->run();
Используйте метод поставщика услуг withEtag()
для создания объекта Response с нужным ETag
заголовком.
Этот метод принимает объект ответа PSR7 и возвращает клонированный ответ PSR7 с новым HTTP-заголовком.
$app->get('/foo', function ($req, $res, $args) {
$resWithEtag = $this->cache->withEtag($res, 'abc');
return $resWithEtag;
});
Используйте метод поставщика услуг withExpires()
для создания объекта Response с нужным Expires
заголовком.
Этот метод принимает объект ответа PSR7 и возвращает клонированный ответ PSR7 с новым HTTP-заголовком.
$app->get('/bar',function ($req, $res, $args) {
$resWithExpires = $this->cache->withExpires($res, time() + 3600);
return $resWithExpires;
});
Используйте метод поставщика услуг withLastModified()
для создания объекта Response с нужным Last-Modified
заголовком.
Этот метод принимает объект ответа PSR7 и возвращает клонированный ответ PSR7 с новым HTTP-заголовком.
//Пример маршрута с помощью LastModified
$app->get('/foobar',function ($req, $res, $args) {
$resWithLastMod = $this->cache->withLastModified($res, time() - 3600);
return $resWithLastMod;
});