當來源站點出現問題時如何使使用者的請求暫時可以得到響應
來源站點出現問題,不能給使用者返回請求的內容的時候,有什麼辦法使使用者仍然取到內容,雖然是到期的內容?
方法1:通過增加ats外掛程式實現:
為了防止來源站點出現問題,如出現逾時的情況,導致資料沒有正常返回,返回錯誤碼如502、504的時候,atsProxy 伺服器會直接返回給使用者502、504,影響用於體驗,ats可通過增加外掛程式功能實現當ats接收到來源站點返回的502、504時如果ats本地存在到期的快取資料,則把到期的快取資料暫時返回給使用者,在使用者看來是200的成功訪問。
方法2:通過ats內建的處理機制:
如果來源站點不能給ats返回資料,如來源站點服務停掉了,機器宕掉了,則此時如果ats中有緩衝則會返回TCP_REFRESH_FAIL_HIT/200 ,之後再次訪問一直為TCP_HIT/200 ,直到proxy.config.http.cache.max_stale_age這個緩衝值到了,以後再次請求返回TCP_REFRESH_FAIL_HIT/502
records.config中的配置項:
proxy.config.http.cache.max_stale_age INT 604800
上面配置項的含義:在不能緩衝該對象之前,舊對象能夠響應的最大時間(預設一周604800s)。
上述兩種方法達到預期效果的前提是:ats中有緩衝且到期了
==========
在上面方法2的情況下測試:
下面為用戶端的部分回應標頭資訊的區別:
1. 伺服器正常提供服務,正常響應(TCP_HIT/200):
Proxy-Connection: keep-alive
* Connection #0 to host 192.168.10.74 left intact
* Closing connection #0
2. 伺服器stop下再次發送相同請求(TCP_REFRESH_FAIL_HIT/200):
* HTTP/1.1 proxy connection set close!
< Proxy-Connection: close
< Warning: 111 DLC-3.0
* Closing connection #0
3.上面2的基礎上再次發送多條相同請求(TCP_HIT/200):
Proxy-Connection: keep-alive
< Warning: 111 DLC-3.0
* Connection #0 to host 192.168.10.74 left intact
* Closing connection #0
4.伺服器stop下當配置值604800s到了後,再次發送請求(TCP_REFRESH_FAIL_HIT/502):
Proxy-Connection: Keep-Alive
>
< HTTP/1.1 502 Connection refused
* Connection #0 to host 192.168.10.74 left intact
* Closing connection #0
http://www.bkjia.com/PHPjc/1122650.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1122650.htmlTechArticle當來源站點出現問題時如何使使用者的請求暫時可以得到響應 來源站點出現問題,不能給使用者返回請求的內容的時候,有什麼辦法使使用者仍然取到內容...