rails如何过期资产?

时间:2012-02-25 04:18:16

标签: ruby-on-rails caching assets sprockets

application.rb中,有以下内容:

# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'

我已将此增加到1.1,但是当我重新加载我的页面时,旧的js仍然被加载。我查看了源代码,希望找到一个附加到js和css文件的GET版本参数,但是没有这样的东西。

<link href="/assets/application.css" media="all" rel="stylesheet" type="text/css" />
<script src="/assets/application.js" type="text/javascript"></script>

是什么迫使浏览器清除其缓存?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

集:

config.assets.digest = true 

在production.rb中。然后使用以下方法预编译样式表:

rake assets:precompile

您会看到指纹已添加到实际文件名中,如下所示:

styles-5b4f282be3720d5b1e40d9e343dfc60a.css

只要编辑样式表(或其他资源),就会更改此指纹。更改的文件名强制浏览器清除它的缓存。

答案 2 :(得分:1)

您必须使用资产管道。然后使用asset_path,javascript_include_tag等包含资产。您的get没有Md5指纹,因此您的资产管道未启用,或者您没有正确链接到您的js。