1

我在我网站的一页上使用 rails 页面缓存(使用 memcache)。缓存的过期时间为 24 小时。但是缓存值包含一些名为asset-FINGERPRINT.css的资产

如果我在缓存存在的 24 小时内运行部署,指纹会发生变化,但我的缓存值中仍然有旧版本。因此,当我尝试获取资产时,我得到了 404。

我有多个版本的页面,所以我不能在每次部署后手动使页面过期。我的问题是,有没有人遇到过同样的问题,解决方案是什么?

4

1 回答 1

2

如果我是你,我不会删除旧版本的资产。除了您面临的问题之外,您可能不希望旧版本的 HTML 与新的 CSS 或 Javascript 一起使用 - 如果您不小心,这很容易破坏事情。

因为资产的每个版本都有一个指纹,所以您可以同时使用当前版本和几个以前的版本。一种方法是将 public/assets 符号链接到在版本之间不会更改的文件夹(如果您使用 capistrano 部署,如果您使用默认资产管道集成,则会发生这种情况)。

话虽如此,在你觉得你永远无法清除缓存的情况下,我感觉很不稳定。

于 2012-05-29T17:06:45.300 回答