3

我正在开发一个 RoR 应用程序。我想为售罄的物品设置一个 ttl。sold_out_status 函数返回售罄产品的productIds,定义为:

def sold_out_status
 query_str = params[:pids]
 pids = query_str.split(",")
 sold_outs = cache(request.fullpath.to_s, :expires_in => 3600.seconds.to_i) do 
  pids.select {|x| (Product.find(x).on_hand <= 0)}.join(",")
 end

render :text => sold_outs
end

有没有办法可以将产品缓存在清漆中并为售罄的产品设置一个 ttl。一些研究表明,ESI 可能是一个好主意。但是,我找不到可以遵循的详细文档来实现这一点。另外,我怎样才能访问 varnish 中的 sold_out_status 的输出?

编辑:页面上的售罄产品可以通过请求 URL 找到,与此 URL 对应的页面包含呈现为文本的售罄产品的 ID。

4

1 回答 1

1

在 中添加以下内容vcl_fetch

sub vcl_fetch{
  if (req.url ~ "^/taxons/sold_out_status.") {
    std.syslog(180, "setting TTL for sold out products");
    set beresp.do_esi = true;
    set beresp.ttl = 1s;
    return(deliver);
}
于 2013-10-24T07:40:06.247 回答