前端項(xiàng)目打包部署后如何避免讓用戶強(qiáng)制去清除瀏覽器緩存
瀏覽器緩存機(jī)制
瀏覽器緩存是Web瀏覽中一個(gè)重要的性能優(yōu)化機(jī)制,它允許瀏覽器將從服務(wù)器獲取的資源(如HTML文件、圖片、CSS樣式表、JavaScript腳本等)存儲(chǔ)在本地的臨時(shí)存儲(chǔ)區(qū)域。這樣,在用戶再次訪問(wèn)同一個(gè)網(wǎng)站或重復(fù)加載相同資源時(shí),瀏覽器可以直接從本地緩存中讀取這些資源,而不需要重新向服務(wù)器發(fā)送請(qǐng)求,從而大大加快了頁(yè)面的加載速度,減少了網(wǎng)絡(luò)流量消耗,并提升了用戶體驗(yàn)。
解決方案
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è)置了強(qiáng)制緩存或某些特殊的瀏覽器行為,瀏覽器仍會(huì)緩存內(nèi)容。
更嚴(yán)格的控制需要服務(wù)器端配合,在服務(wù)器配置中設(shè)置相應(yīng)的HTTP響應(yīng)頭,如在Apache、Nginx等服務(wù)器的配置文件中設(shè)置Cache-Control和Expires頭部。
2、在HTML的head標(biāo)簽中,添加資源版本號(hào)。當(dāng)引入 CSS 和 JavaScript 文件時(shí),讓每次文件內(nèi)容有所改動(dòng),從而避免瀏覽器緩存問(wèn)題。
<link rel="stylesheet" href="main.css?v=1.0" rel="external nofollow" > <script src="main.js?v=1.0"></script>
3、如果是使用Webpack構(gòu)建打包,在配置文件中利用其文件命名特性來(lái)為輸出的文件添加hash。
// mini-css-extract-plugin 是一個(gè) Webpack 插件,用于將 CSS 從 JavaScript bundle 中分離出來(lái),生成獨(dú)立的 CSS 文件。
// 這樣做有利于提高網(wǎng)頁(yè)加載速度,因?yàn)?CSS 可以被瀏覽器并行下載,而且還能利用瀏覽器對(duì)靜態(tài)資源的緩存機(jī)制。
// 此外,它也支持 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提取到單獨(dú)的文件中
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項(xiàng)目,通過(guò)vue.config.js配置
const path = require('path')
const webpack = require('webpack')
module.exports = {
publicPath: './',
// 打包的時(shí)候使用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ā)布后就不需要手動(dòng)清除瀏覽器緩存了。
總結(jié)
到此這篇關(guān)于前端項(xiàng)目打包部署后如何避免讓用戶強(qiáng)制去清除瀏覽器緩存的文章就介紹到這了,更多相關(guān)前端打包部署清除瀏覽器緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
怎樣用Javascript實(shí)現(xiàn)策略模式
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之策略模式,想學(xué)習(xí)設(shè)計(jì)模式的同學(xué),一定要看一下2021-04-04
javascript針對(duì)不確定函數(shù)的執(zhí)行方法
這篇文章主要介紹了javascript針對(duì)不確定函數(shù)的執(zhí)行方法,實(shí)例分析了eval函數(shù)及符號(hào)屬性兩種執(zhí)行方式,需要的朋友可以參考下2015-12-12
通過(guò)seajs實(shí)現(xiàn)JavaScript的模塊開(kāi)發(fā)及按模塊加載
seajs實(shí)現(xiàn)了JavaScript 的 模塊開(kāi)發(fā)及按模塊加載。用來(lái)解決繁瑣的js命名沖突,文件依賴等問(wèn)題,其主要目的是令JavaScript開(kāi)發(fā)模塊化并可以輕松愉悅進(jìn)行加載。下面我們來(lái)一起深入學(xué)習(xí)下吧2019-06-06
sessionStorage存儲(chǔ)時(shí)多窗口之前能否進(jìn)行狀態(tài)共享解析
這篇文章主要為大家介紹了sessionStorage存儲(chǔ)時(shí)多窗口之前能否進(jìn)行狀態(tài)共享解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
layui 監(jiān)聽(tīng)表格復(fù)選框選中值的方法
今天小編就為大家分享一篇layui 監(jiān)聽(tīng)表格復(fù)選框選中值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
JavaScript調(diào)用瀏覽器打印功能實(shí)例分析
這篇文章主要介紹了JavaScript調(diào)用瀏覽器打印功能的方法,實(shí)例分析了針對(duì)各種常用瀏覽器調(diào)用打印功能的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
解決Webpack 熱部署檢測(cè)不到文件變化的問(wèn)題
下面小編就為大家分享一篇解決Webpack 熱部署檢測(cè)不到文件變化的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Bootstrap3 input輸入框插入glyphicon圖標(biāo)的方法
這篇文章主要介紹了Bootstrap3 input輸入框插入glyphicon圖標(biāo)的方法的相關(guān)資料,需要的朋友可以參考下2016-05-05
一個(gè)網(wǎng)頁(yè)標(biāo)題title的閃動(dòng)提示效果實(shí)現(xiàn)思路
通過(guò)網(wǎng)頁(yè)title來(lái)提示用戶有新消息這個(gè)功能很常見(jiàn),下面有個(gè)不錯(cuò)的示例,大家可以參考下2014-03-03

