我们希望减少其中一个web服务器的负载,我们正在运行一些测试,将squid配置为反向代理。
配置如下:
http_port 80 accel defaultsite=original.server.com
cache_peer original.server.com父服务器80 0不查询原始服务器name=myAccel
acl our_sites dstdomain .contentpilot.net
http_access允许our_sites
cache_peer_access myAccel允许our_sites
cache_peer_access myAccel否认所有
我们目前的情况是,服务器几乎一直都在返回TCP_MISS。
1238022316.988 86 69.15.30.186 TCP_MISS/200 797 GET http://original.server.com/templates/site/images/topnav_givingback.gif - FIRST_UP_PARENT/myAccel -
1238022317.016 76 69.15.30.186 TCP_MISS/200 706 GET http://original.server.com/templates/site/images/topnav_diversity.gif - FIRST_UP_PARENT/myAccel -
1238022317.158 75 69.15.30.186 TCP_MISS/200 570 GET http://original.server.com/templates/site/images/topnav_careers.gif - FIRST_UP_PARENT/myAccel -
1238022317.344 75 69.15.30.186 TCP_MISS/200 2981 GET http://original.server.com/templates/site/js/home-search-personalization.js - FIRST_UP_PARENT/myAccel -
1238022317.414 85 69.15.30.186 TCP_MISS/200 400 GET http://original.server.com/templates/site/images/submenu_arrow.gif - FIRST_UP_PARENT/myAccel -
1238022317.807 75 69.15.30.186 TCP_MISS/200 2680 GET http://original.server.com/templates/site/js/homeMakeURL.js - FIRST_UP_PARENT/myAccel -
1238022318.666 1401 69.15.30.186 TCP_MISS/200 103167 GET http://original.server.com/portalresource/lookup/wosid/intelliun-2201-301/image2.jpg - FIRST_UP_PARENT/myAccel image/pjpeg
1238022319.057 1938 69.15.30.186 TCP_MISS/200 108021 GET http://original.server.com/portalresource/lookup/wosid/intelliun-2201-301/image1.jpg - FIRST_UP_PARENT/myAccel image/pjpeg
1238022319.367 83 69.15.30.186 TCP_MISS/200 870 GET http://original.server.com/templates/site/images/home_dots.gif - FIRST_UP_PARENT/myAccel -
1238022319.367 80 69.15.30.186 TCP_MISS/200 5052 GET http://original.server.com/templates/site/images/home_search.jpg - FIRST_UP_PARENT/myAccel -
1238022319.368 88 69.15.30.186 TCP_MISS/200 5144 GET http://original.server.com/templates/site/images/home_continue.jpg - FIRST_UP_PARENT/myAccel -
1238022319.368 76 69.15.30.186 TCP_MISS/200 412 GET http://original.server.com/templates/site/js/showFooterBar.js - FIRST_UP_PARENT/myAccel -
1238022319.377 100 69.15.30.186 TCP_MISS/200 399 GET http://original.server.com/templates/site/images/home_arrow.gif - FIRST_UP_PARENT/myAccel -
我们已经试过删除所有的缓存内存了。任何想法。难道我的网站每次都在标记一些不同的内容,即使它自上次被代理请求后没有改变?
发布于 2009-04-17 11:03:53
源服务器(web服务器)与您的内容一起发送返回的头是什么?为了让squid可以缓存,我认为您通常必须在响应头中指定一个最后修改的或ETag。Web服务器通常会对静态内容自动执行此操作,但是如果您的内容正在动态地被服务(即使是来自静态源),那么您必须确保它们在那里,并处理请求标头,例如if -修改的-自和如果-无匹配。
另外,既然我被你接下来的关于会话的问题指出了这个问题--在回答中是否出现了一个“不同”的标题?例如,“wants : Cookie”告诉缓存,内容可以根据请求中的Cookie头而变化:所以静态内容想要删除该内容。但是,如果存在会话,web服务器可能会将其添加到所有请求中,而不考虑所服务数据的静态/动态性质。
在我的经验中,为了了解HTTP头对缓存的影响而进行的一些试验是有很大好处的:我记得发现解决方案并不总是显而易见的。
发布于 2009-04-21 10:48:27
检查firefox中wireshark或firebug返回的标头(后者更容易推动,但如果最终需要的话,前者会给出更多的低级信息)。
在响应头中查找这些项(单击“`Net”视图中的某个项以展开该项并查看请求和响应标头):
如果在过去没有将其设置为合理的时间,那么如果每次请求相同的项时都会发生这些更改,那么它将不会被缓存,如果每次请求相同的项,那么它将是来自客户端的re-fetched
(我相信)。
正如araqnid所建议的,HTTP头可以对代理认为它可以缓存的内容产生巨大的影响。如果您的后端正在使用apache,那么测试在没有经过任何PHP或其他应用层的情况下服务的静态文件是可缓存的。
另外,检查maximum_object_size和minimum_object_size的squid设置是否设置为合理的值(默认值为4Mb和0kb,这应该很好),最大缓存项的年龄也是合理设置的。(有关此设置和其他设置,请参见http://www.visolve.com/squid/squid30/cachesize.php#maximum_object_size )
https://stackoverflow.com/questions/683906
复制相似问题