今天就跟大家聊聊有關怎么在vue項目中強制清除頁面緩存,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
解決方案:
在HTTP協議中,只有后端返回 expires 或 Cache-Control:max-age=XXX, 前端才緩存。
但在瀏覽器中,默認會對 html css js 等靜態文件、以及重定向進行緩存,如果在HEAD頭中指定:
<HEAD> <METAHTTP-EQUIV="Pragma"CONTENT="no-cache"> <METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache"> <METAHTTP-EQUIV="Expires"CONTENT="0"> </HEAD>
瀏覽器不會緩存html,但是還是會對重定向緩存,并且這種方式并不規范,可能有的瀏覽器不支持。
我的最終解決方案是:
1) 對hash過的靜態文件還是采用默認方式,客戶端會緩存。
2)對html文件,返回時增加頭:Cache-Control,必須每次來服務端校驗,根據etag返回200或者304
對應的nginx配置如下:
upstream example-be {
ip_hash;
server unix:/run/example-be.sock;
}
server{
listen 80; #監聽端口
server_name example.com
# 后臺api
location ~ ^/api {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
include uwsgi_params;
uwsgi_pass example-be;
}
# 前端靜態文件
location ~* \.(gif|jpg|jpeg|png|css|js|ico|eot|otf|fon|font|ttf|ttc|woff|woff2)$ {
root /var/www/example-fe/dist/;
}
# 前端html文件
location / {
# disable cache html
add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';
root /var/www/example-fe/dist/;
index index.html index.htm;
try_files $uri /index.html;
}
}由于瀏覽器緩存靜態文件的時間不可控,我們可以在nginx上自己配置expires 1M(1個月)
# 前端靜態文件
location ~* \.(gif|jpg|jpeg|png|css|js|ico|eot|otf|fon|font|ttf|ttc|woff|woff2)$ {
root /var/www/example-fe/dist/;
expires 1M;
add_header Cache-Control "public";
}看完上述內容,你們對怎么在vue項目中強制清除頁面緩存有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。