基於http協議講解緩存頭Cache-Control在服務中的應用

先思考兩個問題?

  • 在頁面中引入靜態資源文件,為什麼靜態資源文件改變後,再次發起請求還是之前的內容,沒有變化呢?
  • 在使用webpack等一些打包工具時,為什麼要加上一串hash碼?

緩存頭Cache-Control的一些特性

可緩存性

  • public http經過的任何地方都可以進行緩存
  • private 只有發起請求的這個瀏覽器才可以進行緩存
  • no-cache 任何一個節點都不可以緩存

到期

  • max-age= 設置緩存到多少秒過期
  • s-maxage= 會代替max-age,只有在代理服務器才會生效
  • max-stale= 是發起請求方主動帶起的一個頭,是代表即便緩存過期,但是在max-stale這個時間內還可以使用過期的緩存,而不需要願服務器請求新的內容

重新驗證

  • must-revalidate 如果max-age設置的內容過期,必須要向服務器請求重新獲取數據驗證內容是否過期
  • proxy-revalidate 主要用在緩存服務器,指定緩存服務器在過期後重新從原服務器獲取,不能從本地獲取

其它

  • no-store 本地和代理服務器都不可以存儲這個緩存,永遠都要從服務器拿body新的內容使用
  • no-transform 主要用於proxy服務器,告訴代理服務器不要隨意改動返回的內容

示例

  • cache-control.html

cache-control

-->


分享到:


相關文章: