我正在开发一款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可能是一个好主意。但是,我找不到可以遵循的详细文档来实现这一点。另外,如何在清漆中访问sold_out_status的输出?
编辑:可以通过跟踪请求网址找到网页上售罄的商品,与此网址对应的网页包含以文字形式呈现的售罄产品的ID。
答案 0 :(得分: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);
}