您好,登錄后才能下訂單哦!
瀏覽器出于性能考慮,對(duì)js/css一類的靜態(tài)資源,并不是每次都向服務(wù)器詢問(wèn)此資源是否有更新,各位一定都有這樣的經(jīng)歷:明明服務(wù)器上的腳本更新了,但抓包發(fā)現(xiàn)瀏覽器根本沒(méi)有發(fā)請(qǐng)求詢問(wèn),直接就使用了本地的緩存,結(jié)果導(dǎo)致蹦了腳本錯(cuò)誤提示,非要F5甚至Ctrl+F5強(qiáng)制刷新一下才好。
頁(yè)面我們可以強(qiáng)制瀏覽器不緩存,但資源不受我們控制,目前可行的方法就是加后綴,每次資源有更新時(shí)就變換這個(gè)后綴,讓瀏覽器認(rèn)為它是新資源。比如用版本號(hào)做后綴,這樣:
- <script type="text/javascript" src="../scripts/core.js"></script>
- 改為
- <script type="text/javascript" src="../scripts/core.js?115"></script>
不過(guò)缺點(diǎn)也是顯而易見(jiàn)的,維護(hù)起來(lái)太麻煩了,很容易漏,除非你有合適的發(fā)布工具來(lái)干這件事。
換一個(gè)方法,用資源的最后更新時(shí)間做后綴,只要寫一個(gè)公共方法就好了,以ASP.Net為例:
- <script type="text/javascript" src="<%= UI.Get("../scripts/core.js") %>"></script>
- using System;
- using System.IO;
- using System.Web;
- namespace Test.WebUI
- {
- public class UI
- {
- public static string Get(string url)
- {
- return string.Format("{0}?{1}", url, File.GetLastWriteTime(HttpContext.Current.Server.MapPath(url)).Ticks);
- }
- }
- }
這下終于解脫了。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。