前端項(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 AJAX 三級(jí)聯(lián)動(dòng)的實(shí)現(xiàn)代碼
這篇文章主要介紹了原生javascript AJAX 三級(jí)聯(lián)動(dòng)的實(shí)現(xiàn)代碼,非常不錯(cuò)代碼簡(jiǎn)單易懂,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05
一文總結(jié)JavaScript中常見(jiàn)的設(shè)計(jì)模式
在程序設(shè)計(jì)中有很多實(shí)用的設(shè)計(jì)模式,而其中大部分語(yǔ)言的實(shí)現(xiàn)都是基于“類”。在程序設(shè)計(jì)中有很多實(shí)用的設(shè)計(jì)模式,而其中大部分語(yǔ)言的實(shí)現(xiàn)都是基于“類”。,本文將總結(jié)了JavaScript中常見(jiàn)的十五種設(shè)計(jì)模式,感興趣的朋友可以參考下2023-05-05
uniapp實(shí)現(xiàn)全局設(shè)置字體大小(小中大的字體切換)
隨著UniApp的流行,越來(lái)越多的開發(fā)者選擇使用它來(lái)構(gòu)建跨平臺(tái)應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于uniapp實(shí)現(xiàn)全局設(shè)置字體大小(小中大的字體切換)的相關(guān)資料,需要的朋友可以參考下2023-06-06
javascript學(xué)習(xí)筆記(七)利用javascript來(lái)創(chuàng)建和存儲(chǔ)cookie
今天把javascript如何用來(lái)創(chuàng)建及存儲(chǔ)cookie復(fù)習(xí)了一下,其中的一點(diǎn)體會(huì)拿出來(lái)和大家討論,懇請(qǐng)高手指點(diǎn)一二。2011-04-04
JS實(shí)現(xiàn)懸浮球只在一側(cè)滑動(dòng)并且是橫屏狀態(tài)下
這篇文章主要介紹了JS實(shí)現(xiàn)懸浮球只在一側(cè)滑動(dòng) 并且是橫屏狀態(tài)下,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
CountUp.js數(shù)字滾動(dòng)插件使用方法詳解
這篇文章主要為大家詳細(xì)介紹了CountUp.js數(shù)字滾動(dòng)插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10

