Rails Asset Pipeline: Возвращает дайджест версию, когда запрашивается не дайджест
Я предоставляю фрагмент кода, который клиент может вставить в свой статический HTML, который ссылается на мой файл application.js.
Поскольку это находится на странице, которую я не могу контролировать, и я не хочу просить клиента обновлять его фрагмент каждый раз, когда я нажимаю релиз, мне интересно, есть ли способ вернуть мой digest-application.js версия, когда запрашивается нормальная версия, чтобы браузер получал самую последнюю версию?
Я могу установить временную метку кеша для скрипта src, но не уверен, что это действительно надежно.
Есть мысли о том, как лучше всего с этим справиться?
2 ответа
Я думаю, что элегантный способ - это сделать какой-нибудь контроллер для перенаправления 302 на ваши активы.
Вы можете вставить своему клиенту кодовую ссылку /public-assets/my_assets
В вашем маршруте создайте маршрут:
match '/public-assets/:asset_name' => 'PublicAsset#index'
И создай свой контроллер PublicAssetController
class PublicAssetContoller < ApplicationController::Base
def index
redirect_to asset_path(params[:asset_name])
end
end
Мы делаем нечто подобное для нашего "публичного" javascript, который интегрирован в стороннее веб-приложение.
мы делаем это путем создания символической ссылки на нашем ресурсе-сервере во время развертывания capistrano, которая указывает на не-дайджест-имя файла. поскольку они являются просто файлами на нашем веб-сервере, Apache сделает все остальное.