【问题标题】:Rails: manually clear asset pipeline cacheRails:手动清除资产管道缓存
【发布时间】:2014-01-28 21:26:24
【问题描述】:

我知道rails在修改文件时会自行清除资产管道缓存,但我有一个特殊的场景。我将我的应用程序作为对 ajax 请求的 HTML 响应提供,跨域使用 rack-cors 绕过 CORS。

问题是每次在人的浏览器上通过 ajax 请求时,我都会得到一个新的 application.js 文件:

这是三个请求..三个单独的 application.js 文件

如果我可以在发起请求之前清除资产管道缓存,我想我可以避免这个问题。无论如何,我可以以编程方式做到这一点?我不确定这是否会在 rails 端或远程客户端完成。我假设客户端上有一些 jquery 来清除缓存,但真的在寻找一些关于这个问题的额外视角。我试过了

$(#myresultsdiv).empty() 

没有运气。非常感谢任何帮助!

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax ruby-on-rails-3


    【解决方案1】:

    我会关闭资产管道,因为如果为每个请求重新生成它,您将无法获得它的好处。

    在您的环境配置中:

      # Enable asset pipeline
      config.assets.digest = false
    
      config.assets.enabled = false
    

    【讨论】:

    • config.assets.digest = false,不会做任何事情。我改为 config.assets.enabled = false ,虽然这确实解决了问题,但由于我一直依赖资产管道这一事实,又出现了一百万个问题。有没有办法在不关闭资产管道的情况下做到这一点?
    【解决方案2】:

    我没有设法清除资产管道缓存,但我通过使用 ajax 预过滤器禁用了 nonce:

    $.ajaxPrefilter('script', function(options) {
    options.cache = true;
    });
    

    【讨论】:

      猜你喜欢
      • 2012-04-17
      • 1970-01-01
      • 2013-04-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 2011-12-15
      • 2013-05-19
      相关资源
      最近更新 更多