ruby on rails 3.1 использует кеширование браузера - PullRequest
3 голосов
/ 24 ноября 2011

Привет, ребята, я запустил в производственном режиме мое умное приложение в rails 3.1 с mongodb.

Я вижу, что у скорости страницы из firebug есть умная проблема:

использует кеширование браузера статического кодаВы можете видеть на изображении выше:

enter image description here

Я проверил это исправление, но у меня не работает:

ROR + MVC Отключить кэш браузера

Я хочу знать, как я могу исправить эту проблему для моего изображения, CSS и JavaScript, или если для этого есть драгоценный камень.

Ответы [ 2 ]

6 голосов
/ 27 ноября 2011

Спасибо за ответ Hightechrider и miaout17.

Я использую Apache. Я добавляю в apache2.conf следующий код:

<LocationMatch "^/assets/.*$">
 # Some browsers still send conditional-GET requests if there's a
 # Last-Modified header or an ETag header even if they haven't
 # reached the expiry date sent in the Expires header.
 Header unset Last-Modified
 Header unset ETag
 FileETag None
 # RFC says only cache for 1 year
 ExpiresActive On
 ExpiresDefault "access plus 1 year"
</LocationMatch>

Bue я получаю следующую ошибку при попытке перезагрузить сервер apache:

Синтаксическая ошибка в строке 256 файла /etc/apache2/apache2.conf: Недопустимая команда ExpiresActive, возможно, с ошибкой или определена модулем, не включенным в конфигурацию сервера Действие «перезагрузка» не выполнено. Журнал ошибок Apache может содержать больше информации.

Какая-то идея?

Отредактировано Я нашел исправление для этой ошибки:

Если у вас есть пользователь Ubuntu. Вы можете использовать ярлык, используя a2enmod, команду, которая автоматически включает модуль:

sudo a2enmod headers

, а затем перезагрузите сервер и вуаля: D работает нормально.

2 голосов
/ 25 ноября 2011

В соответствии с Руководствами по конвейеру активов вам необходимо установить срок действия в файле конфигурации вашего веб-сервера.В руководстве приведен пример конфигурации для Apache и Nginx. Прочтите раздел 4.1.1 «Конфигурация сервера» и попробуйте.

ROR + MVC Отключить кэш браузера не работает, потому что выразмещаем статические файлы на веб-сервере, поэтому запрос не будет проходить через контроллер.

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


Предыдущий (неправильный) ответ:

Фактически, это не вызовет никаких проблем.Вам нужно установить время истечения, если ваш файл должен истечь.Однако в Rails 3.1 конвейер ресурсов автоматически добавит MD5 к имени файла.Если файл изменяется, URL-адрес также будет изменен.Таким образом, безопасно не устанавливать время истечения.
...