用户请求当通过ats访问源站时,可能出现的错误码及对错误码的处理:
1. 当CDN节点文件不存在时,如果源站返回5xx【配置return 502;】,则给用户直接返回5xx【TCP_REFRESH_MISS/502或者TCP_MISS/502,一条且会带age响应头】
2. 当CDN节点文件过期后用户下次访问时,我们会回源验证:
*** 源站返回5xx: 这时如果源站返回5XX状态码,则ats给用户返回5xx,如果想不反馈给用户5xx,而是将缓存中过期的文件内容返回给用户,这个功能ats本身没带,需要自编写ts插件来实现【见过插件处理后返回TCP_MISS_X_REDIRECT/502和TCP_HIT/200】
***源站宕机,vcache返回5xx:源站连接不上,则在records.config中配置项proxy.config.http.cache.max_stale_age的值的时间内返回缓存内容【TCP_REFRESH_FAIL_HIT/200->TCP_HIT/200】,响应头age值超过这个时间返回5xx【TCP_REFRESH_FAIL_HIT/502两条】,这是ats带的功能,不需要另外开发,此时没有删除原来缓存的内容,如果此后源服务恢复正常了,再次请求会TCP_REFRESH_HIT/200
3. Dns解析失败,直接返回用户502 ERR_CONNECT_FAIL/502 ,两条,没有age响应头
4. remap中没有配置,则用户发起请求不能回源,直接返回用户ERR_CONNECT_FAIL/404,ats上目前会一下出来两条404的访问log,响应头中无age值
5. remap中配置了,但源上没有用户请求的内容,则会回源,源返回TCP_REFRESH_MISS/404,ats上只会出来一条404的访问log且响应头中有age值,此时会删除原来缓存的内容【这个是否删除貌似程序可以控制...】,如果此后源上存在了用户请求的内容,再次请求会TCP_MISS/200
阅读(2778) | 评论(0) | 转发(0) |