2015-05-12 4 views
0

Я в настоящее время разрабатывает приложения с Laravel 5, и я столкнулся с следующей проблемой:Laravel 5 - включить кэширование локальных файлов активов

Когда я включать в себя, например, .js файл из иностранного сервера , скрипт загружается с 304 не измененным - это нормально. Он загружается в 146 мс в соответствии с вкладкой сети хрома. Когда я включаю локальный актив, {{asset ('путь к ресурсу')}} Я всегда получаю 200, и для загрузки файла требуется значительно больше (около 800 мс).

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

  • Брауэр: Chrome 43.0.2357.52
  • Вебсервер: Я использую ремесленник встроенный веб-сервер

ответ

2

ремесленник сервер не предназначен для использования производства - это просто сервер разработки. Он не кэширует, и это не значит. Вы не хотите, чтобы кеширование было при разработке, поскольку это предотвратит внесение изменений в браузер.

Когда вы находитесь в производстве с использованием реального сервера, такого как Apache или Nginx, он должен обрабатывать кеширование для вас. Они оба очень гибкие и имеют кучу вариантов конфигурации для того, как они кэшируют статические активы. Стоит взглянуть на конфигурации шаблонов для этих веб-серверов на HTML 5 Boilerplate repo, так как они дают вам много правильных настроек из коробки.

Вам лучше разрешить веб-серверу кэшировать активы, а не помещать эту работу на Laravel. Для веб-сервера намного проще отправить обратно статический актив (или ответ 304), чем загружать PHP, загружать фреймворк и затем определять соответствующий ответ.

+0

Я знал, что Artisan был только для производства, но производство становится отвратительным, если загрузка страницы сильно возрастает, если вы добавите к нему некоторые активы. И некоторые активы, такие как jquery, bootstrap и т. Д., Не имеют тенденций к изменению (и если они это сделают, я знаю, что лучше очистить сам кеш). – Johannes

+1

Нет, сервер Artisan * не * предназначен для производства. Вы можете посмотреть, как использовать CDN для сторонних активов, которые вы не хотите обслуживать самостоятельно (например, jQuery или Bootstrap). В противном случае рассмотрите возможность использования усадьбы Laravel или другой виртуальной серверной среды, которая будет использовать Apache/Nginx для локальной разработки и даст вам лучшее кэширование не изменяющихся активов. – Dwight

Смежные вопросы