vue怎麼設定html不快取 但是js、css等檔案做快取

BigCrank發表於2024-05-06
在 Vue.js 專案中,我們通常使用 webpack 打包工具進行編譯構建,其中 HTML 檔案通常不做快取,而 JS、CSS 檔案需要做快取。這可以透過 webpack 的配置實現。下面是針對你的問題的步驟:

1. 開啟 webpack 的配置檔案 webpack.config.js 或者 webpack.prod.config.js(如果你的專案是基於 vue-cli 搭建的,可能需要修改 vue.config.js 檔案)
2. 為了讓 JS、CSS 檔案在每次編譯後都產生新的檔名防止瀏覽器快取,我們需要對 output 配置做如下修改:

```javascript
output: {
filename: '[name].[chunkhash].js',
chunkFilename: '[id].[chunkhash].js'
}
```
上面的配置確保每次編譯後產生新的檔名,"[chunkhash]"是根據檔案內容計算出來的 hash ,內容不變則 hash 不變,所以有效避免了瀏覽器快取。

3. 對於 CSS ,我們需要使用 ExtractTextPlugin 外掛,同樣在其配置中加入內容雜湊:

```javascript
new ExtractTextPlugin('[name].[contenthash].css')
```

4. HTML 檔案不快取,首先我們需要知道,一般來說,HTML 是沒有做瀏覽器快取的,除非你在伺服器配置了強制快取。如果你的伺服器對 HTML 檔案配置了強制快取,你需要修改伺服器的配置,設定 no-cache 或 must-revalidate 來禁止 HTML 檔案的快取。

5. 其次,如果你使用了 webpack 的 HtmlWebpackPlugin 外掛來生成 HTML 檔案,你需要確保這個外掛的配置中沒有設定快取。如果有的話,你需要關閉這個配置:

```javascript
new HtmlWebpackPlugin({
...,
cache: false
})
```

以上就是在 Vue.js 中設定 HTML 不快取,而 JS、CSS 檔案做快取的具體方法。

相關文章