负载均衡架构下IIS 如果保持ETAG的可用性?
小弟最近在工作运到一个问题,在负载均衡的网络架构中,N台IIS服务器如果保证ETAG的可用性呢?情况是这个样子滴:
用户在访问网站时负载均衡设备将用户的请求轮询到第N-1台服务器的时,IIS告知用户的浏览器现在etag为AAAAAA,这是用户关闭浏览器,用户重新发起请求,负载均衡设备将请求轮询到N-4台服务器时,IIS告知用户的etag为BBBBBBB,这样以前缓存在用户本地的页面就不起作用了,失去了etag的功效,用户浏览器判断etag的不同,就需要重新请求页面。
不知道哪位大侠有这方面的经验或者更好的解决方案,在apache下有可行的方案,但是IIS下。。。。。
经过项目的验证,终于找到了IIS下Etag同步的方案:
在IIS中etag的构成是 filetimestamp:changenumber 。
若WEB服务是多个IIS服务器负载均衡构成,那么就要统一所有IIS服务器的changnumber,否则即便是访问资源的时间戳是一样的,由于 changnumber 不同,合成的 Etag还是不同,导致web服务器有可能不能返回 HTTP/1.x 304 Not Modified 。以致不能利用本地缓存。
查看 changnumber 的命令是:
Mdutil.exe get w3svc -prop 2039
修改 changnumber 的命令是:
Mdutil.exe set w3svc -prop 2039 -value "entitytagvalue"
参考文档:
http://support.microsoft.com/kb/922733/en-us/
http://developer.yahoo.com/performance/rules.html
http://hi.baidu.com/webwatch/blog/item/65a6c9cbc4c8ddf552664ffc.html
http://hi.baidu.com/dianhui/blog/item/7a964faf39551af3fbed5093.html
页:
[1]