溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Nginx與瀏覽器緩存的處理方法

發(fā)布時(shí)間:2020-09-13 04:17:56 來(lái)源:腳本之家 閱讀:805 作者:~風(fēng)鈴~ 欄目:服務(wù)器

一、瀏覽器對(duì)緩存的處理:Internet選項(xiàng)

  ★ 控制請(qǐng)求服務(wù)器策略:是忽略資源的緩存策略的情況下額外強(qiáng)制請(qǐng)求服務(wù)器的意思。

    ★ 檢查存儲(chǔ)的頁(yè)面較新版本

         1.每次訪問(wèn)網(wǎng)頁(yè)時(shí)
                不管是否有緩存、資源狀態(tài)是否過(guò)期,都會(huì)再次請(qǐng)求服務(wù)器。
         2.每次啟動(dòng)Internet Explorer時(shí)
           不管是否有緩存、資源狀態(tài)是否過(guò)期,都會(huì)再次請(qǐng)求服務(wù)器。
         3.自動(dòng)
                大體上和2是一樣的,只是對(duì)于圖片的策略有點(diǎn)不同。
         4.從不
                完全按照資源的緩存策略來(lái)請(qǐng)求服務(wù)器。

  ★ F5 刷新:請(qǐng)求服務(wù)端,但是會(huì)根據(jù)和服務(wù)器對(duì)比文件來(lái)確定是否下載

  ★ Ctrl + F5刷新:一定會(huì)去服務(wù)器下載。

二、緩存控制策略

  ★L(fēng)ast-Modified/If-Modified-Since要配合Cache-Control使用,Etag/If-None-Match也要配合Cache-Control使用。

    ps: 分布式系統(tǒng)里多臺(tái)機(jī)器間文件的last-modified必須保持一致,以免負(fù)載均衡到不同機(jī)器導(dǎo)致比對(duì)失敗

       分布式系統(tǒng)盡量關(guān)閉掉Etag(每臺(tái)機(jī)器生成的etag都會(huì)不一樣)

  ★HTML通過(guò)meta的http-equiv屬性控制瀏覽器緩存策略:通過(guò)設(shè)置Pragma和Cache-control和expires控制

    ps:只能控制html的緩存策略,不能控制css/js/圖片的緩存策略。

    Cache-control的max-age和expires同時(shí)存在,那么先處理max-age。
    Cache-control指定了no-cache后,max-age和expires。
    Pragma: http 1.0 IE瀏覽器才識(shí)別,請(qǐng)求頭中不會(huì)體現(xiàn),但是確實(shí)有效果
    Cache-control: http 1.1

三、Nginx設(shè)置瀏覽器緩存

      ★Nginx設(shè)置瀏覽器緩存:可以在http 、server、location節(jié)點(diǎn)中添加??梢栽O(shè)置各種資源的緩存策略,不僅僅是HTML。而<meta http-equiv>節(jié)點(diǎn)只針對(duì)HTML

#add_header Cache-Control no-cache;
  #add_header Cache-Control private;
  add_header Cache-Control max-age=7200;
  if ($request_filename ~* ^.*?\.(ico|jpeg|gif|jpg|png|woff)$){
    expires 7d;
  }
  if ($request_filename ~* ^.*?\.(js|css)$){
    expires 7d;
  } 
  if ($request_filename ~* ^.*?\.(html|htm)$){
    expires 3d;
  }

  ★Nginx中的配置會(huì)覆蓋HTML的http-equiv="Cache-control"配置。

   但是如果HTML中的加了下面3個(gè)標(biāo)簽,瀏覽器端效果還是只能no-cache。(從效果上來(lái)看:Nginx的Cache-control配置無(wú)效)

          因?yàn)镹ginx的Cache-control配置只是覆蓋了Cache-control(如果html加的是后面兩個(gè)標(biāo)簽,Nginx還是有效的),而Pragma仍然起著作用。

  <meta http-equiv="Pragma" content="no-cache"/> 
    <meta http-equiv="Cache-control" content="no-cache;max-age=0"/> 
    <meta http-equiv="expires" content="0"/>

總結(jié)

以上所述是小編給大家介紹的Nginx與瀏覽器緩存的處理方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI