防止在iframe中缓存Javascripts

防止在iframe中缓存Javascripts,iframe,Iframe,我有一些JS文件被iframe中的页面加载。在Chrome中,刷新似乎不会强制重新加载JS文件,而JS文件正被定期处理和修改。如果我直接浏览到JS文件,刷新,它似乎解决了这个问题。我尝试了StackOverflow上其他地方的修复程序,但似乎没有成功。有什么想法吗?这个应用程序是在Rails上开发的——也许我可以使用JS打包解决方案 在\u过滤器之前:设置\u缓存\u buster def set_cache_buster response.headers["Cache-Contro

我有一些JS文件被iframe中的页面加载。在Chrome中,刷新似乎不会强制重新加载JS文件,而JS文件正被定期处理和修改。如果我直接浏览到JS文件,刷新,它似乎解决了这个问题。我尝试了StackOverflow上其他地方的修复程序,但似乎没有成功。有什么想法吗?这个应用程序是在Rails上开发的——也许我可以使用JS打包解决方案


在\u过滤器之前:设置\u缓存\u buster

  def set_cache_buster
    response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
    response.headers["Pragma"] = "no-cache"
    response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
  end

您是否正在使用asset helper javascript_include_标记?原因:如果您的配置具有以下内容:

config.action_controller.perform_caching = false
包含在该助手中的每个JS都将附加一个时间戳以避免缓存

例如:

<%= javascript_include_tag "prototype", "application", "effects" %>

使用perform_caching=true,它将生成:

<script type="text/javascript" src="/javascripts/prototype.js"></script>
<script type="text/javascript" src="/javascripts/application.js"></script>
<script type="text/javascript" src="/javascripts/effects.js"></script>
<script type="text/javascript" src="/javascripts/prototype.js?1197321216"></script>
<script type="text/javascript" src="/javascripts/application.js?1197321216"></script>
<script type="text/javascript" src="/javascripts/effects.js?1197321216"></script>

但如果perform_caching=false,则会生成:

<script type="text/javascript" src="/javascripts/prototype.js"></script>
<script type="text/javascript" src="/javascripts/application.js"></script>
<script type="text/javascript" src="/javascripts/effects.js"></script>
<script type="text/javascript" src="/javascripts/prototype.js?1197321216"></script>
<script type="text/javascript" src="/javascripts/application.js?1197321216"></script>
<script type="text/javascript" src="/javascripts/effects.js?1197321216"></script>

我没有测试这段代码,它可能需要一些调整,我接触rails已经有一段时间了。祝你好运

资料来源:


这仅仅是为了开发的原因吗?我想说,他正在寻找一种不受缓存阻碍的开发方法。但在生产中,我建议打开缓存。我认为您的解决方案将完全禁用缓存。这可能不是他想要的我可能错了^^