1.request的头必须不大于8192字节,第一行必须是method,uri,protocol.
2,请求的方法只能是 get ,post,head
3.协议只支持http/0.9 http/1.0 http/1.1
4.post数据不能大于32768字节
5.如果有Expect头,那么值只能是100-continue
6.如果request中提供了content-type 那么值只能是application/x-www-form-urlencoded
7.request中必须包含host头
如果request里没有host头值,那么WA返回400系列错误,其他的不匹配则直接将请求丢给原始主机。
接到请求后,WA按如下顺序处理:
1.执行应用程序匹配,并使用相关联的加速规则
2。如果加速规则中有proxy规则,则根据proxy规则设定,将请求发给原始主机
3.如果没有proxy规则,则WA试图用系统中编译过的缓存响应用户
4.如果系统中没有找到对用的缓存,则请求交原始主机
5.如果找到缓存,则检查是否有invalidations规则
6.如果有invalidations规则,则WA检查当前缓存的最后刷新时间是否老于invalidations规则的触发时间,则触发该规则进行相关内容的原始请求并刷新缓存。
7如果发现缓存的刷新时间新于invalidations规则的触发时间或者没有invalidations规则,则WA检查现有缓存的TTL时间,如果lifetime过期,则请求原始主机
8。如果第7条中的缓存TTL没有过期,则直接用缓存响应请求。
WA是否对reponse内容进行缓存,取决于以下条件:
1.当初的request一定不能命中do-not-caching 这一proxy规则
2.reponse头的第一行 必须包括:协议、状态码、和响应文本 ,比如http /1.1 200 (OK)
3.如果response中有transfer-Encoding,值只能为chunked
4.响应的内容必须备WA判断为完整的内容:
WA根据一下条件判断:
a.如果响应的是html内容,则WA判断<html></html>两个标记,都存在的才算为完整,才能缓存
b.如果不是html内容,或者覆盖了a条中关于html的判断规则,则使用headers进行判断:响应的内容长度应等于content-length的值
c.如果没有content-length这个头,则必须使用chunked transfer-coding,使用chunked transfer-coding后,WA直到看到zero-sized chunk才认为响应内容完整。
5.响应的内容大小不能超过WA中的配置值,默认配置是2MB
如果符合以上条件,则WA进行缓存,否则直接将响应发给客户端。
文章评论