前端項目打包部署后如何避免讓用戶強制去清除瀏覽器緩存
瀏覽器緩存機制
瀏覽器緩存是Web瀏覽中一個重要的性能優(yōu)化機制,它允許瀏覽器將從服務(wù)器獲取的資源(如HTML文件、圖片、CSS樣式表、JavaScript腳本等)存儲在本地的臨時存儲區(qū)域。這樣,在用戶再次訪問同一個網(wǎng)站或重復(fù)加載相同資源時,瀏覽器可以直接從本地緩存中讀取這些資源,而不需要重新向服務(wù)器發(fā)送請求,從而大大加快了頁面的加載速度,減少了網(wǎng)絡(luò)流量消耗,并提升了用戶體驗。
解決方案
1、使用Cache-Control
和Pragma
頭部,禁止瀏覽器緩存。
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> <meta http-equiv="Pragma" content="no-cache">
上述方法在大多數(shù)瀏覽器中都適用。但如果用戶設(shè)置了強制緩存或某些特殊的瀏覽器行為,瀏覽器仍會緩存內(nèi)容。
更嚴(yán)格的控制需要服務(wù)器端配合,在服務(wù)器配置中設(shè)置相應(yīng)的HTTP響應(yīng)頭,如在Apache、Nginx等服務(wù)器的配置文件中設(shè)置Cache-Control
和Expires
頭部。
2、在HTML的head標(biāo)簽中,添加資源版本號。當(dāng)引入 CSS 和 JavaScript 文件時,讓每次文件內(nèi)容有所改動,從而避免瀏覽器緩存問題。
<link rel="stylesheet" href="main.css?v=1.0" rel="external nofollow" > <script src="main.js?v=1.0"></script>
3、如果是使用Webpack構(gòu)建打包,在配置文件中利用其文件命名特性來為輸出的文件添加hash。
// mini-css-extract-plugin 是一個 Webpack 插件,用于將 CSS 從 JavaScript bundle 中分離出來,生成獨立的 CSS 文件。 // 這樣做有利于提高網(wǎng)頁加載速度,因為 CSS 可以被瀏覽器并行下載,而且還能利用瀏覽器對靜態(tài)資源的緩存機制。 // 此外,它也支持 CSS Modules 和熱模塊替換(HMR)。 const MiniCssExtractPlugin = require('mini-css-extract-plugin'); module.exports = { // ... output: { path: path.resolve(__dirname, 'dist'), filename: '[name].[chunkhash].js', // 使用chunkhash為chunk生成哈希文件名 chunkFilename: '[name].[chunkhash].chunk.js', }, module: { rules: [ { test: /\.css$/, use: [ // 將MiniCssExtractPlugin.loader放在第一位,以將CSS提取到單獨的文件中 MiniCssExtractPlugin.loader, 'css-loader', ], }, // 如果你也在處理其他樣式文件,如less或sass,也應(yīng)相應(yīng)配置 ], }, plugins: [ // 在plugins部分配置MiniCssExtractPlugin new MiniCssExtractPlugin({ filename: '[name].[contenthash].css', chunkFilename: '[id].[contenthash].chunk.css', }), ], // ... };
若為vue項目,通過vue.config.js配置
const path = require('path') const webpack = require('webpack') module.exports = { publicPath: './', // 打包的時候使用hash值 filenameHashing: true, // 輸出文件目錄 outputDir: 'dist', configureWebpack: { // 打包編譯后的js文件 output: { filename: `js/[name].[chunkhash].js`, chunkFilename: `js/[name].[chunkhash].chunk.js`, } }, // 打包后css文件 css: { extract: { filename: `css/[name].[contenthash].css`, chunkFilename: `css/[id].[contenthash].chunk.css`, } } }
這樣配置之后,每次打包發(fā)布后就不需要手動清除瀏覽器緩存了。
總結(jié)
到此這篇關(guān)于前端項目打包部署后如何避免讓用戶強制去清除瀏覽器緩存的文章就介紹到這了,更多相關(guān)前端打包部署清除瀏覽器緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript針對不確定函數(shù)的執(zhí)行方法
這篇文章主要介紹了javascript針對不確定函數(shù)的執(zhí)行方法,實例分析了eval函數(shù)及符號屬性兩種執(zhí)行方式,需要的朋友可以參考下2015-12-12通過seajs實現(xiàn)JavaScript的模塊開發(fā)及按模塊加載
seajs實現(xiàn)了JavaScript 的 模塊開發(fā)及按模塊加載。用來解決繁瑣的js命名沖突,文件依賴等問題,其主要目的是令JavaScript開發(fā)模塊化并可以輕松愉悅進行加載。下面我們來一起深入學(xué)習(xí)下吧2019-06-06sessionStorage存儲時多窗口之前能否進行狀態(tài)共享解析
這篇文章主要為大家介紹了sessionStorage存儲時多窗口之前能否進行狀態(tài)共享解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02Bootstrap3 input輸入框插入glyphicon圖標(biāo)的方法
這篇文章主要介紹了Bootstrap3 input輸入框插入glyphicon圖標(biāo)的方法的相關(guān)資料,需要的朋友可以參考下2016-05-05一個網(wǎng)頁標(biāo)題title的閃動提示效果實現(xiàn)思路
通過網(wǎng)頁title來提示用戶有新消息這個功能很常見,下面有個不錯的示例,大家可以參考下2014-03-03