程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 當源站出現問題時如何使用戶的請求暫時可以得到響應

當源站出現問題時如何使用戶的請求暫時可以得到響應

編輯:關於PHP編程

當源站出現問題時如何使用戶的請求暫時可以得到響應


源站出現問題,不能給用戶返回請求的內容的時候,有什麼辦法使用戶仍然取到內容,雖然是過期的內容?
方法1:通過增加ats插件實現:
為了防止源站出現問題,如出現超時的情況,導致數據沒有正常返回,返回錯誤碼如502、504的時候,ats代理服務器會直接返回給用戶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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved