【问题标题】:Rails asset pipeline fingerprinting and page cachingRails 资产管道指纹识别和页面缓存
【发布时间】:2012-06-29 22:06:22
【问题描述】:

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

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

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

【问题讨论】:

  • 恕我直言,在这种情况下您应该重置缓存
  • 如果我重置缓存,我担心服务器的负载会达到屋顶

标签: ruby-on-rails ruby-on-rails-3 memcached


【解决方案1】:

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

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

话虽如此,我觉得自己永远无法清除缓存让我感到不安。

【讨论】:

  • 这是个好主意!是的,它很不稳定,但它是暂时的 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 2013-04-01
  • 1970-01-01
  • 2011-11-10
相关资源
最近更新 更多