Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 日本在线视频毛片,一区二区三区免费在线,欧美a级黄色大片

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          前端項目如何防止瀏覽器緩存舊版js和css

          迎關注我的頭條號:Wooola,專注于Java、Golang、微服務架構,致力于每天分享原創文章、快樂編碼和開源技術。

          前言

          最近發版前端項目,用戶經常反饋新添加功能在線上環境不好用,常出現新老頁面并存的狀況。經前端同事排查法發現,實際上只需要重新刷新一下頁面就沒事了。但是每次去通知用戶肯定不現實,所以需要對前端的js和css等文件采取一定的緩存失效的措施,強制瀏覽器重新去服務器獲取新的js代碼以及css文件。

          樓主經過實際的項目情況反饋,總結以下兩點切實可行的辦法,分享給大家,希望對大家有幫助。

          1. 路徑后面加時間戳或者隨機數的方式
          2. 采用hash(md5)重命名文件

          路徑后面加時間戳或者隨機數的方式

          時間版本號

          如果每次發布,針對修改過的js或者css文件路徑加上時間的版本號,一般以年月日拼寫。

          <script type="text/javascript" src="lib/common.js?v=20190719"></script>
          <link rel="stylesheet" type="text/css" href="assets/css/ie/ie8.css?v=20190719" />
          

          如果發生緊急情況,需要在一天當中對某些css或者js文件多次發版,可以把時間精確到時分秒。

          目前樓主主推采用加版本號的方式,因為文件太多,只能做增量修改。好處是沒有做任何修改js或者css文件可以不用加版本號。

          采用隨機數

          document.write('<script src=\".lib/common.js?r=' + Math.random() + "\"" + '><\/script>');
          

          一般不建議用隨機數的方式,因為每次刷新頁面,隨機數都會變化,那么瀏覽器認為一個新的url需要重新請求服務端獲取js或css文件,不會在使用瀏覽器本地緩存。同時占用網絡帶寬,影響服務器響應速度。

          采用hash(md5)重命名文件

          可以利用 gulp-rev或者webpack

          entry: {
           main: './src/common.js',
           slove: './src/ie8.js'
          },
          output: {
           filename: '[name].[hash].js',
           path: path.resolve(__dirname, 'dist')
          }
          

          例如百度搜索首頁,就是利用hash給js和css文件重命名。

          . 前端緩存概述

          前端緩存主要是分為HTTP緩存和瀏覽器緩存。其中HTTP緩存是在HTTP請求傳輸時用到的緩存,主要在服務器代碼上設置;而瀏覽器緩存則主要由前端開發在前端js上進行設置。下面會分別具體描述。

          2. 前端緩存分類

          2.1 HTTP緩存

          整體流程

          HTTP緩存都是從第二次請求開始的。

          第一次請求資源時,服務器返回資源,并在respone header頭中回傳資源的緩存參數;第二次請求時,瀏覽器判斷這些請求參數,擊中強緩存就直接200,否則就把請求參數加到request header頭中傳給服務器,看是否擊中協商緩存,擊中則返回304,否則服務器會返回新的資源。

          HTTP緩存分為強緩存和協議緩存,它們的區別如下:

          200 from disk or 200 from memory

          強緩存的200也有兩種情況:200 from disk和200 from memory。現在我沒有找到明確的文檔來描述這種區別的發生條件。知乎這個問題中提到了一些情景,可以自行取用。

          2.1.1 強緩存

          2.1.2 協商緩存

          協商緩存都是成對出現的。

          2.1.3 最佳優化策略——消滅304

          最佳優化策略:因為協商緩存本身也有http請求的損耗,所以最佳優化策略是要盡可能的將靜態文件存儲為較長的時間,多利用強緩存而不是協商緩存,即消滅304。

          但是給文件設置一個很長的Cacha-Control也會帶來其他的問題,最主要的問題是靜態內容更新時,用戶不能及時獲得更新的內容。這時候就要使用hash的方法對文件進行命名,通過每次更新不同的靜態文件名來消除強緩存的影響。

          Hash命名:

          • http://xxx.com/main.5eas34fa.js
          • http://xxx.com/main.js?5eas34fa
          • http://xxx.com/5eas34fa/main.js

          2.2 瀏覽器緩存

          2.2.1 本地存儲小容量

          Cookie主要用于用戶信息的存儲,Cookie的內容可以自動在請求的時候被傳遞給服務器。

          LocalStorage的數據將一直保存在瀏覽器內,直到用戶清除瀏覽器緩存數據為止。

          SessionStorage的其他屬性同LocalStorage,只不過它的生命周期同標簽頁的生命周期,當標簽頁被關閉時,SessionStorage也會被清除。

          2.2.2 本地存儲大容量

          WebSql和IndexDB主要用在前端有大容量存儲需求的頁面上,例如,在線編輯瀏覽器或者網頁郵箱。

          2.2.3 應用緩存與PWA

          應用緩存全稱為Offline Web Application,它的緩存內容被存在瀏覽器的Application Cache中。它也是一個被W3C標準廢棄的功能,主要是通過manifest文件來標注要被緩存的靜態文件清單。但是在緩存靜態文件的同時,也會默認緩存html文件。這導致頁面的更新只能通過manifest文件中的版本號來決定。而且,即使我們更新了version,用戶的第一次訪問還是會訪問到老的頁面,只有下一次再訪問才能訪問到新的頁面。所以,應用緩存只適合那種常年不變化的靜態網站。如此的不方便,也是被廢棄的重要原因。

          PWA全稱是漸進式網絡應用,主要目標是實現web網站的APP式功能和展示。盡管PWA也有manifest文件,但是與應用緩存卻完全不同。不同于manifest簡單的將文件通過是否緩存進行分類,PWA用manifest構建了自己的APP骨架。另外,PWA用Service Worker來控制緩存的使用。這一塊的內容較多,在這里就不詳細展開了。

          2.2.4 往返緩存

          往返緩存又稱為BFCache,是瀏覽器在前進后退按鈕上為了提升歷史頁面的渲染速度的一種策略。BFCache會緩存所有的DOM結構,但是問題在于,一些頁面開始時進行的上報或者請求可能會被影響。這個問題現在主要會出現在微信h5的開發中

          總結:本文梳理了前端所有可能涉及的緩存,希望能從整體層面建立起系統的緩存知識體系。描述都比較簡略,起到拋磚引玉之用。如有錯誤,還望見諒。

          .14號上午11點,MIUI 7已全面支持開放升級。支持的機型有:小米手機2/2S、小米手機3、小米手機4、小米Note/頂配版、紅米手機系列、紅米Note 系列,下面讓我們一起來看下如何進行升級呢?

          1、不雙清卡刷

          這個非常簡單,只要下載好對應機型的卡刷包放在手機存儲在系統更新里面選擇刷機包即可,以下是詳細的圖文教程:

          根據自己機型下載好官方卡刷包,下載地址:http://www.miui.com/download.html

          下載好后把刷機包放在手機內置存儲或者SD卡內,打開“系統升級”,點擊升級界面右上角的三點。如下圖:

          在彈出的菜單選擇“手動選擇安裝包”,然后會跳到文件管理器,選擇存包的位置選擇刷機包就可以了,這里會提示重啟,點重啟就OK。接下來就讓ROM飛一會吧,手機會自動安裝刷機包,安裝完后會自動重啟進系統。

          小結:這就是不雙清卡刷的方法,但是要注意的是,只有安裝比手機當前系統版本高的刷機包才不用雙清,如果是降級或者系統有問題的還是看看雙清的刷機方法吧。另外,紅米系列選擇刷機包后直接提示重啟,然后在Rec里面自動完成刷機包的安裝,小米系列(1,2,3,4)是在系統更新內完成安裝然后直接重啟進系統的,那是因為小米系列支持雙系統。(紅米手機1不適用)

          2、雙清卡刷:

          這個也不難,和上面刷機過程差不多,只是方法不一樣

          ?雙清前要先備份好個人數據,不如然清除后就沒有了。首先給卡刷包改名,改成“update.zip”,記住后綴是".zip",改完名后放在手機“內置”存儲,然后關機,手機在關機狀態下同時按住"音量加"和"電源鍵"進入Rec(恢復模式),官方Rec操作方法:音量加減是選擇鍵,電源鍵是確認。中間的圖就是Rec主界面,這里選擇簡體中文(看得懂英文也可以選英文啦),選擇清除數據。如下圖所示:

          這里我們只說雙清,雙清就是清除”系統緩存“和”用戶數據“兩項,選擇進去確定清除就OK,兩項操作方法一樣的,清除這兩項之后回到主菜單,選擇"將update.zip安裝至系統",這也就是剛剛要給刷機包改名的原因了,這里只能識別叫做"update.zip"的包。如下圖:

          選擇"將update.zip安裝至系統"后還會有一個確認提示,這里選擇確認就OK。接下來又是ROM飛的時候了,待進度條走到100會自動重啟進入系統。

          小結:這就是雙清卡刷了,雙清時要注意其他的項目不能清除,否則之前放在存儲里面的刷機包也會被清掉。

          3、MiFlash線刷:

          這個超級簡單,但是需要一臺電腦。要準備的東西有:

          Miflash刷機工具,下載地址:http://www.xiaomi.cn/content-19-10672-1.html

          官方線刷包,下載地址:http://rom.xiaomi.cn??或:http://www.miui.com/shuaji-393.html

          下載好刷機工具后先安裝到系統,如下圖(步驟按圖片順序):

          這是安裝完成后的提示,直接點擊結束:

          打開Miflash,然后要到手機端操作了,手機關機狀態下同時按住"音量減"加"電源鍵",會出現一只米兔和Fastboot字樣,這里就進入到Fastboot模式了,接著手機用數據線連接到電腦,電腦端Miflash中點擊”刷新“按鈕,就會看到有一個設備在列表里面了,如下圖:

          把下載好的線刷包解壓出來,解壓后我們得到一個這樣的文件夾,刷機包名字根據機型來定的,反正都是一串英文。如下圖:

          接著點擊"瀏覽"按鈕,選擇解壓好的刷機包路徑:

          選擇好后是是這個樣子的:



          點擊刷機就可以了,刷機期間手機端的Fastboot不會有反應,但是電腦端有進度條和時間顯示,刷完一樣自動重啟進系統,刷機過程不能拔數據線,刷好之后是這樣的:


          主站蜘蛛池模板: 亚洲第一区精品观看| 高清在线一区二区| 成人一区二区免费视频| 精品人妻系列无码一区二区三区| 视频一区二区三区人妻系列| 亚洲综合无码一区二区痴汉| 中文字幕乱码一区二区免费| 国产精品日韩一区二区三区| 亚洲第一区二区快射影院| 少妇无码AV无码一区| 一区二区精品视频| 波多野结衣在线观看一区 | 中文字幕av日韩精品一区二区 | 国产精品一区电影| 在线免费视频一区| 亚洲性色精品一区二区在线| 日韩精品无码一区二区三区免费| 国产AV午夜精品一区二区三| 日韩毛片一区视频免费| 午夜无码视频一区二区三区| 国产女人乱人伦精品一区二区| 无码喷水一区二区浪潮AV| 日本一区二区三区免费高清| 亚洲AV无码一区二区三区牲色| 69福利视频一区二区| 无码人妻一区二区三区一| 亚洲欧洲无码一区二区三区| 无码丰满熟妇一区二区| 九九无码人妻一区二区三区| 成人免费一区二区无码视频| 国产一区二区三区免费在线观看| 无码人妻精品一区二区三区不卡 | 一区二区三区免费电影| 大屁股熟女一区二区三区| 国产免费一区二区三区在线观看| 日韩精品无码一区二区中文字幕| 国产电影一区二区| 国内精品一区二区三区最新| 高清无码一区二区在线观看吞精| 乱色熟女综合一区二区三区| 国产成人精品无码一区二区三区|