proxy代理   soft软件   IT 业界特快   norton 诺顿病毒库   代理列表   search FTP搜索   whois IP地理位置   blog 追求完美  
money理财   life生活   RSS聚合门户   firefox WEB浏览器   免费域名   typeset 假古文   AntiVirus 反病毒   ipcn 站点导航  

« 升级到 MovableType 3.3x 并修改 entry_basename 兼容性 | Main | vmware gsx server service »

December 31, 2007

squid 对 404 302 缓存的相关问题

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
https://windtear.net/archives/2007/12/31/squid_cache_404_302.html

1. squid 缓存 404
当后端realserver文件不存在 返回 404 object not found
squid 进行缓存的时间依赖于 squid.conf 的negative_ttl 配置
negative_ttl 30 seconds
一般http server 都支持配置404错误页面 ErrorDocument 404 /404.html
如果这里错误页面是不同域名的 那就是一个 302 Moved temporary

2. squid 缓存 302
如上所述 跨域错误页面就是302跳转
此时不想squid 缓存302
可以这么搞 加上过期头
Cache-Control: max-age=30
后端apache可以通过 ExpiresActive on
ExpiresDefault A30
这样的方式激活
squid 3 之后 加上了 http_status 的 acl
可以结合 http_status 设置好 acl 然后 cache deny ..

如果想让squid发现302再去真正的源取文件缓存
首先应该思考为什么要这么做 squid的工作是面向 request/response 的
如果太多的判断 应该往后端应用层考虑 想法不返回302 而返回200

如果非要禁止302返回给用户 可以这样搞
通过redirect_program(2.5)/url_rewrite_program(2.6)先去后端HEAD判断一下是不是302
如果是302 就把返回头 Location: url 中的url返回(递归判断下去更好) 否则原样返回
这样多了一次不必要的后端请求 是违反协议思想的 简单的问题搞复杂了

本blog WWW

Posted by windtear at December 31, 2007 12:15 AM

本站使用中的任何问题,请与 windtear @ windtear.net 联系
Copyright© 1999-2024 Windtear. All rights reserved.