0
我们使用Rails的caches_action
方法和Redis来实现常用页面的缓存。 这是一个非常动态的站点,因此具有不同URL参数的页面必须在缓存中保持不同(例如,?page=1
与?page=2
)。但只要网址匹配,内容就可以缓存并提供给多个访问者。默认情况下,我如何从Rails生成的链接中排除某些参数?
由于我们很大一部分流量来自Adwords广告,因此我们的许多用户都到达了我们的页面,URL中有一个gclid参数,导致缓存无效。我工作围绕这排除从使用的缓存路径的GCLID识别唯一URL:
caches_action :search,
:expires_in => 10.minutes,
:cache_path => Proc.new { |c| c.params.except('gclid') }
这一段伟大的工作,直到我意识到我们的分析数据了,因为我们在缓存的HTML包括内部链接与以前访问的gclid参数。
所以,要解决这个是非常straightforward-每次我生成一个链接,我需要手动排除gclid
,如时间:
link_to 'some page', params.except('gclid')
我的问题是:有没有办法自动排除所有产生gclid
链接?如果不必在整个站点手动执行此操作,这将非常方便。
也许猴子补丁'link_to'方法通过添加你的这一行。 – MurifoX 2013-04-22 14:28:11
是的,我想过修补link_to。但是我也必须修补url_for以及其他一些类似的方法。 – 2013-04-22 14:41:19