Заголовки не устанавливаются в Laravel 5.6

Я использую Laravel 5.6.

Я пытаюсь кэшировать мои файлы CSS / JS. Я делаю это, используя промежуточное программное обеспечение.

  public function handle($request, \Closure $next, $guard = null)
{

$request->header('Cache-Control', 'max-age=86400, public');
$request->header('X-www-test-header', 'test-value');

return $next($request);
}

И обертывание в основном каждый маршрут в этом промежуточном программном обеспечении. Это кажется очень плохой идеей, с которой я стою, но, если честно, я не могу найти другого способа сделать это (любые предложения приветствуются). Но это не проблема.

Проблема в том, что мои заголовки не проходят.

введите описание изображения здесь

Я также попытался установить заголовки через .htaccess

  <IfModule mod_headers.c>
<filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
Header set Cache-Control "max-age=2678400, public"</filesmatch>
<filesmatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, private, must-revalidate"</filesmatch>
<filesmatch "\.(pdf)$">
Header set Cache-Control "max-age=86400, public"</filesmatch>
<FilesMatch "\.(js|css)$">
ExpiresActive On
ExpiresDefault "access plus 1 weeks"</FilesMatch>

Это тоже не работает.

Я, честно говоря, не уверен, в чем проблема. Либо laravel каким-то образом переписывает все заголовки, либо apache или что-то в этом роде.

Буквально любое указание в правильном направлении приветствуется.

0

Решение

  1. Laravel не обрабатывает запросы активов. Эти запросы обрабатываются веб-сервером.
  2. Поэтому попробуйте включить модуль заголовков apache, выполнив команду a2enmod headers
0

Другие решения

Первая проблема — вы используете заголовок запроса getters установить заголовок, который не будет работать, конечно. Так $request->header(key, default) вернет заголовок с указанным ключом из запроса, и, если этот заголовок не указан, будет возвращено указанное вами значение по умолчанию.

установка заголовков в ответ

return response($content)
->header('Content-Type', $type)
->header('X-Header-One', 'Header Value')
->header('X-Header-Two', 'Header Value');

приведенный выше код показывает, как вы должны прикрепить заголовок к ответу, а вот Документация Laravel на что

Включить кэширование для статических активов

Так что теперь, если вы хотите установить срок действия активов, чтобы их можно было кэшировать, лучший способ сделать это — использовать ваш веб-сервер. Например, если вы используете Apache, этот урок поможет.
Кстати, вам следует использовать ваш веб-сервер, потому что по большей части Laravel не отвечает на запросы статических активов (ваш веб-сервер делает), если вы не укажете это.
Короче говоря, вам нужно включить модуль mod_expires и настроить его, задав время истечения

a2enmod expires

и используйте его, как показано ниже

[...]
<IfModule mod_expires.c>
<FilesMatch "\.(jpe?g|png|gif|js|css)$">
ExpiresActive On
ExpiresDefault "access plus 1 week"</FilesMatch>
</IfModule>
[...]
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector