В режиме разработки Rails 3.1 (при использовании конвейера активов) изображения, передаваемые из assets/images, передаются с заголовком ответа "Cache Control: must-revalidate".
Это означает, что Google Chrome (и, похоже, только Chrome) будет пытаться повторно получить изображения множество раз - даже во время просмотра одной страницы. Это привело к проблемам со всеми видами манипуляций с DOM через JavaScript. Вот несколько примеров:
Я могу полностью понять, что это разумно для сервера разработки. Я даже понимаю, что отказ Chrome кэшировать изображение, даже в пределах одной страницы, вполне разумен.
Итак, есть ли способ изменить заголовок Cache Control, который Rails применяет к ответам изображений при разработке?
Обновление: как предложили несколько человек, еще более интересный вопрос: почему Chrome пытается повторно получить изображения несколько раз в течение просмотра страницы, в то время как другие браузеры этого не делают? (И почему это не вызывает проблем у других разработчиков?)
Обновление x2: Я не буду приводить это в качестве ответа, потому что это просто обходной путь, который оказался достаточным для моих целей, но мы смогли обойти эту проблему, предварительно скомпилировав активы, а затем отбросив предварительно скомпилированные CSS и JS. (Для этого потребуется установить false для отладки sprockets в development.rb
.)
rake assets:precompile
cd public/assets
find . -name "*.js*" -exec rm -rf {} \;
find . -name "*.css*" -exec rm -rf {} \;