Rails 3 Asset Pipeline + Apache + Phusion Passenger - PullRequest
6 голосов
/ 08 ноября 2011

Я использую Rails 3.1 с конвейером ресурсов, phusion 3.0.x и apache 2.2.17.

В документации по конфигурации на http://guides.rubyonrails.org/asset_pipeline.html, в разделе 4.1.1 указано, что мне нужночтобы добавить раздел в мою конфигурацию apache:

<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>

Я предполагал, что Phusion Passenger только что "обработал" это ... или я был небрежен в не RTFM?Если я хочу воспользоваться преимуществами дактилоскопии, нужно ли добавить это в конфигурацию apache?

1 Ответ

9 голосов
/ 08 ноября 2011

Если вы хотите использовать все преимущества конвейера ресурсов, вам действительно нужно добавить это в свои конфигурации Apache.Без этого раздела ваша конфигурация Apache, скорее всего, специально указывает браузерам , а не на кеширование ресурсов, что приводит к ненужному количеству циклов между браузером и вашим сервером.

Для того, чтобы получить этодля работы может потребоваться включить еще несколько модулей Apache.Для этого:

sudo a2enmod
# Choose headers
sudo a2enmod
# Choose expires
sudo service apache2 restart

Для отладки вашей настройки я рекомендую использовать плагин Live Headers Firefox.Используя это, в частности, запросите URL ресурса (например, http://mysite.com/assets/application-8a0ae0b2d708f797674b7123c37501ba.css)and посмотрите на заголовки кэша до и после внесения этого изменения. Найдите пример URL ресурса, выполнив View Source на любой странице.

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

...