之前讓客戶端更新webgl程序是在程序里寫版本號然后和服務器對比,不同就調用?window.location.reload(true);之前做的客戶端都是給企業用,用戶數少看不出來啥問題。后來自己開發一個小網站,用戶數量還是挺多,然后就會遇到各種各樣的問題了。比如這個自動更新程序的問題就不行,會報錯。用戶用鍵盤的強制刷新就可以更新程序。搜了AI發現其實就是現在瀏覽器會把window.location.reload(true);和window.location.reload();等價。也就是非強制刷新。也就是說他
-
只重新加載 HTML 頁面,
-
但對大部分 JS、WASM、DATA 等文件依然使用緩存。
所以這個方案行不通。換個方法如下,把index.html中部分代碼改成如下:
const version = "1.01"; // 你可以每次部署時更新這個版本號var buildUrl = "Build";var loaderUrl = `${buildUrl}/3d.loader.js?v=${version}`;var config = {dataUrl: `${buildUrl}/3d.data.unityweb?v=${version}`,frameworkUrl: `${buildUrl}/3d.framework.js.unityweb?v=${version}`,codeUrl: `${buildUrl}/3d.wasm.unityweb?v=${version}`,streamingAssetsUrl: "StreamingAssets",companyName: "Manggehaili",productName: "PPJ_Editor",productVersion: "0.1",showBanner: unityShowBanner,};
代碼里的版本號不需要維護了,每次更新就改這個版本好就可以了。自動加個1.就會重新請求。