當前端頁面開發測試完成后進行上線時,有時候在將更新的頁面上傳到服務器之后,瀏覽器并沒有立即展示新的頁面,而繼續渲染舊的頁面。這是因為瀏覽器默認會對已訪問過的頁面進行緩存,以提高性能。因此,當頁面內容發生變動時,瀏覽器會仍然使用緩存中的舊頁面,而無法獲取到最新的頁面內容。
雖然刷新或者清除緩存能解決這方面的問題,但是用戶并不知道什么時候需要清除緩存,或者根本不知道如何操作。
所以,需要解決文件變動后瀏覽器沒有更新的問題。
解決方案
一般情況下css
、js
和 img
的名字都加了哈希值,所以新版本和就版本的名字是不同的,不會有緩存問題。
但是把打包好的index.html
放到服務器后,index.html
在服務器端可能是有緩存的。
所以只要 入口文件不緩存 這樣就解決問題了。在入口文件head
中添加以下代碼即可:
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">
Expires:在HTTP響應頭中設置Expires字段,用于指定頁面的過期時間。當瀏覽器在過期時間之前再次請求同一資源時,如果服務器返回的響應中包含"Expires"字段且未過期,瀏覽器將直接使用緩存的資源,而不再向服務器發送請求。Expires是HTTP 1.0版本引入的機制,但它存在一些問題,比如無法處理時鐘不同步、不靈活的過期時間等。
Pragma:在HTTP請求頭中使用Pragma字段,通常值為"no-cache"。當瀏覽器發送請求時,如果請求頭中帶有Pragma字段且值為"no-cache",服務器將不使用緩存,并強制要求服務器每次都返回新的響應。然而,Pragma的使用已經過時,Cache-Control是現代瀏覽器更推薦的緩存控制方式。
Cache-Control:在HTTP響應頭中使用Cache-Control字段來控制緩存行為。Cache-Control是HTTP 1.1版本引入的緩存機制,提供了更為靈活和強大的緩存控制選項。通過設置Cache-Control的值,可以指定緩存的策略,如"no-cache"(不使用緩存)、"public"(可以被任何人緩存)、"private"(只能被瀏覽器緩存)、"max-age"(緩存的最長時間)等等。
Cache:Cache(緩存)是指瀏覽器在第一次請求某個資源后,將該資源保存在本地存儲中的一部分。這樣,在再次請求同一個資源時,瀏覽器可以直接從本地緩存中獲取資源,而無需重新下載。通常,瀏覽器緩存可以提升網頁加載速度,減輕服務器負擔。
綜上所述,Expires指定資源的過期時間,Pragma可用于禁用緩存,Cache-Control提供了更靈活的緩存控制選項,而Cache是指存儲在瀏覽器本地的緩存資源。