gpt4 book ai didi

ruby-on-rails - 防止缓存单个js文件

转载 作者:行者123 更新时间:2023-12-04 06:28:03 25 4
gpt4 key购买 nike

我的 Assets 目录中有一个 .js.erb 文件。这会读取一些特定于语言环境的配置。

但是,当底层配置更改时,新文件不会提供给我的浏览器。我得到 304 未修改。

如果我通过添加空格来更改 .js.erb 文件,则可以正确提供新文件。每次我添加配置时都这样做会很痛苦。

有没有办法配置 Rails 不缓存这个特定文件?

感谢您的任何建议。

编辑:Done a bit more reading on the asset pipeline

“ Assets 在服务器启动后的第一个请求中被编译和缓存。Sprockets 设置了一个 must-revalidate Cache-Control HTTP header 以减少后续请求的请求开销——在这些请求中,浏览器获得 304(未修改)响应.

如果 list 中的任何文件在两次请求之间发生了变化,服务器将以新的编译文件作为响应。”

所以这里的问题是第一个请求被缓存了——这是一个动态的 javascript 文件。也许是防止缓存以内联 javascript 的唯一方法??

最佳答案

听起来你不想使用 Assets 管道,它正在努力促进缓存。

与其尝试与 Assets 管道作斗争,不如创建一个实际的 Controller ,然后您就可以根据自己的喜好设置缓存控制 header 。

如果您在 app/views/controller_name 中有一个 js.erb 模板,那么 Rails 应该只渲染它。

例如,如果您有一个名为 JsController 的 Controller ,您可以添加

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

关于ruby-on-rails - 防止缓存单个js文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8559915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com