我正在为客户端提供一段代码,以将其粘贴到其引用我的application.js文件的静态html中。Rails Asset Pipeline:当请求非摘要时返回摘要版本
由于这位于我无法控制的页面上,而且我不想让客户端每次推送发布时更新其片段,所以我想知道是否有方法可以返回我的摘要-application.js版本,当请求正常的版本以确保浏览器获得最新版本时?
我可以在脚本src上设置缓存清除时间戳,但不确定这是否真的可靠。
有关处理此问题的最佳方法的任何想法?
我正在为客户端提供一段代码,以将其粘贴到其引用我的application.js文件的静态html中。Rails Asset Pipeline:当请求非摘要时返回摘要版本
由于这位于我无法控制的页面上,而且我不想让客户端每次推送发布时更新其片段,所以我想知道是否有方法可以返回我的摘要-application.js版本,当请求正常的版本以确保浏览器获得最新版本时?
我可以在脚本src上设置缓存清除时间戳,但不确定这是否真的可靠。
有关处理此问题的最佳方法的任何想法?
我认为必须优雅的方式是做一些控制器来做一些重定向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。
哦,男孩我觉得没有想到让apache处理它有点槛:s是你的cap任务解析manifest.yml以获取摘要文件以链接到? – 2012-03-07 16:52:06
我不记得确切,但我认为我们放弃了这种方法,因为manifest.yml没有包含完整路径。我们只是在寻找文件的修改时间。 – phoet 2012-03-07 17:14:55
尝试你的方式,但得到永远的乐趣:“Sprockets :: Helpers :: RailsHelper :: AssetPaths :: AssetNotPrecompiledError”即使它是 – 2012-03-07 18:02:14