我的资产目录中有一个 .js.erb 文件。这会读取一些特定于区域设置的配置。
但是,当底层配置更改时,新文件不会提供给我的浏览器。我得到 304 未修改。
如果我通过添加空格来更改 .js.erb 文件,则新文件将正确提供。每次添加配置时都这样做会很痛苦。
有没有办法配置 Rails 只是不缓存这个特定文件?
感谢您的任何建议。
Edit: 多读一点有关资产管道的内容 http://guides.rubyonrails.org/asset_pipeline.html
“服务器启动后,资源会在第一个请求上进行编译和缓存。Sprockets 设置必须重新验证的 Cache-Control HTTP 标头,以减少后续请求的请求开销 - 在这些请求上,浏览器会收到 304(未修改)响应。
如果清单中的任何文件在请求之间发生了更改,服务器将使用新的编译文件进行响应。”
所以这里的问题是第一个请求被缓存 - 这是一个动态 JavaScript 文件。也许是防止它被缓存以内联 JavaScript 的唯一方法?
听起来您不想使用资产管道,它正在努力促进缓存。
与其尝试与资产管道作斗争,不如创建一个实际的控制器,然后您就可以根据自己的喜好设置缓存控制标头。
如果 app/views/controller_name 中有一个 js.erb 模板,那么 Rails 应该只渲染它。
例如,如果您有一个名为 JsController 的控制器,您可以添加
match '/javascripts/settings.js', :controller => :js, :action => :settings, :format => :js, :as => :setting_js
到你的routes.rb文件,然后将settings.js.erb粘贴到app/views/js中
然后你可以链接到它
= javascript_include_tag settings_js_path
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)