id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	due_date
106	squid缓存不一致问题（已有方案，待实施）	chenchongqi		"* 问题
报价库前台做了squid缓存，但是实际上会存在squid缓存不一致的情况，因为按照正常hash去某台squid的时候，这台squid有可能队列满、响应超时等，这时候会重新hash到另一台squid去，导致同一个url会同时在多台squid有缓存，那么我们在浏览器反复刷的时候，看到的内容可能会不一致，在某个时间点应用有异常的时候尤其明显，反复刷有可能看到完全不同的内容。
{{{
2012/04/15 08:56:42 [error] 9054#0: *1040065103 upstream timed out 110: Connection timed out) 
while reading upstream, client: 192.168.237.58, server: product.pconline.com.cn, 
request: ""GET /mobile/samsung/ HTTP/1.0"", 
upstream: ""http://192.168.239.64:8001/mobile/samsung/"", 
host: ""product.pconline.com.cn"", 
referrer:  http://product.pconline.com.cn/mobile/nokia/""
}}}

* 解决方案
要求：应用异常的时候，让squid短时间缓存例如5分钟，应用恢复后缓存异常页面的squid可以几分钟内就更新。

解决：原来的报价页面在squid之后是有mc缓存的，并且报价页有异常（不是真的没记录）的时候也是出一个没有记录的页面，200状态码，这样的话是做不到上面的要求，因为squid过期后来拿的还是mc里的异常页面，无法短时间更新。

最终的方法，xindex上了之后裸页面的加载时间也很快，所以可以去掉mc这一层，如果不去掉mc这一层，那么报价页必须对异常捕获后，做特殊处理不放到mc缓存。不管有无mc发生异常后都要设置response的max-age参数让squid只缓存几分钟，也不能完全去掉，否则有异常的那段时间里压力太大。 正常情况下确实没有记录的页面，按正常的squid、mc缓存处理。"	优化	closed	major		报价库		fixed	squid,缓存		
