問題表現
顯示默認的數據
頁面中應該是根據api返回數據,渲染api返回的數據,但是頁面中一直顯示的只是頁面中的默認數據
問題猜測
正常情況下,1個客戶支付一次,不會出現這個情況,沒有緩存的機會,
這種情況多出現在1個客戶打開過一個之前版本的頁面,頁面后期更新過內容,但是之前版本還是存在微信緩存中,
或者是公司內部開發測試人員出現這種情況.
在尋找解決方案的時候,發現很多公司也遇到了這種情況,
問題根本點在於微信的緩存機制太頑固,
跳轉-->再跳轉-->(最終我采取的方案,)
感覺其中一個回復的想法比較靠譜-->以己之矛,攻己之盾,
既然微信公眾號這么喜歡緩存html頁面,
那么扔給微信公眾號一個空白頁面去緩存,
(前提是微信公眾號只是緩存入口的html頁面,而不是緩存了所有訪問過的html頁面)
決定空白頁面的不變,和要跳轉到真實html頁面變化.
我也遇到這個蛋疼的問題 safari瀏覽器沒問題,android微信沒問題,android系統瀏覽器沒問題ios微信有問題 用了N種辦法都解決不了~最后只有把微信刪了。
(理論上搞定)可用戶不會把為了你的頁面把微信刪掉是吧?
折中的辦法訪問的url鏈接重新指向新的一個url這樣就不會出現問題了。
我是訂閱號發送鏈接的!
注意事項
- 如果修改了空白頁html中的內容,那只能將空白頁html改名,或者清理手機緩存了...
作者:洪隆
鏈接:https://www.zhihu.com/question/22471239/answer/44974283
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
其它問題
跨域問題
如果html中一些api請求,沒有返回數據,可能是跨域問題,
查看api服務器是否將支付服務器設置為可以跨域.
測試記錄
1.修改js代碼,增加彈出框
第一次修改了html引用的js代碼,在js初始化的時候,加入了一個alert(""),然后將js文件替換到測試環境,
打開支付頁面,竟然沒有執行alert彈出框,
2.修改html頁面.為js添加版本號
//原引用
<script src="/Scripts/Test.js"></script>
//修改后
<script src="/Scripts/Test.js?v=20210324"></script>
修改完之后,再次進入頁面,
發現js增加的彈出框,已經顯示了.
3.增加一個空白html
3.1.增加一個空白html -->{PayConfirmBlankPage.html}
//獲取網頁url中的相應參數
function getQueryStringBlankPage(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return decodeURI(r[2]);
return null;
}
document.ready(function () {
var id = getQueryStringBlankPage("id");
location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=0'
//將空白頁中的參數,傳遞到實際要去的頁面,並且增加一個隨機數,
window.location.href = "/Pay/PayConfirm.html?id=" + id + "&v=" + Math.random();
})
3.2.修改實際支付頁面引用的js中的代碼(alert)
alert("未修改js文件版本號,但是修改了js代碼");
3.3.可以看到已經執行新增的js代碼(成功彈出執行的內容)
3.4.修改實際支付頁面中的html內容(修改了一個按鈕中的文本)
3.5.再次打開支付頁面,可以看到按鈕中的文本已經修改.
如何測試 & 測試微信緩存問題修復標准
如何測試
*.如何知道頁面是否已經更改了,(更新了html中的內容,如何才能看出來我已經更新了html內容)
這樣我更改了html頁面后,我需要知道微信中的html是否也同樣更新了,
測試通過標准 -->
只要在測試服務器上修改了實際支付html頁面,或者js.
每次進去微信html頁面,都可以看出來變化即可(這樣也就表明了每次進去微信html頁面都是獲取的最新資源)
備注:這么是否可以,還需驗證,甚至或者還有未考慮到的問題?
微信開放社區摘抄問題
微信公眾號頁面緩存問題
html頁面放到公眾號里面,每次都要自己清除微信的緩存才能訪問到最新版本,
我每次更新外網頁面時都在鏈接后面加了個版本號還是不行,怎么樣才能正真去掉這個緩存呢?
回復(摘選幾個回復)
微信公眾號的緩存非常惡心,嘗試過各種方案都苦不堪言。
現在我們是發了新版本就取公眾號里面把菜單的url重新加上隨機數。
他緩存的是html文件,所以vue打包的j、scss就算是hash地址也沒卵用的。
我到時想到個法子,公眾號上的菜單先鏈接到一個空白頁面,
這個空白頁面重新跳轉到公眾號的正式首頁地址,並且每次跳轉都帶上隨機參數去刷新頁面緩存。
讓后端配置不要緩存html文件!有些是默認緩存了html文件,不是說不配置緩存html就不緩存了,有些是自動默認配置上的!要讓后端設置強制不緩存html類型文件~!
太難了,nginx不緩存,前端不緩存都搞了,還是不行,還是有漏網之魚,拜托快快解決吧
前端和JAVA快打起來了,求求快解決把!!!
這個問題沒人管了?
手動清理微信緩存以前管用現在清理了還是清理不了頁面緩存,加參數都沒辦法重新加載
這個問題配置nginx解決了,如下:
location /html/ {
root D:/tools/nginx\-1.16.0;
#解決微信緩存頁面配置
autoindex on;
add\_header Cache\-Control "no\-store";
expires \-1;
}
改文件名可以臨時救急
從2019-08-23 到 2021-3-12。已經19個月、84星期 、587天過去了。。。
修改.[js,html,css]文件版本號
猜測這種情況不好使,如果一個客戶已經存在{test.js?v=1}的一個指定版本號的緩存了,
那么只能服務器修改版本號才能清楚這個客戶的js緩存,
導致的問題就是,只要一個客戶存在緩存就要修改版本號?
這種解決方案應該可以臨時救急(只要1個客戶反映有緩存,就修改文件版本號),
但是不能徹底解決緩存問題.
修改HTTP響應標頭
IIS -->(選中需要修改的)網站 -->HTTP響應標頭 -->添加自定義HTTP響應頭
名稱(N):cache-control
值(V):no-cache
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
以下為原答案這個問題首先要搞清楚微信的緩存機制。據我觀察,開發中頻繁更新html文件,並不會緩存。
猜測和服務器返回的Last-Modified有關。並且抓包發現,緩存時,微信沒有向服務器請求html文件,改變服務器過期時間並沒有用。
touch -m -t 11151101 abcd.html修改文件的修改時間到一個比較舊的時間點,訪問網頁立即觸發了緩存。
這就比較簡單了,Last-Modified永遠是最新的不就解決了。
立即動手,改變一下nginx設置,比如我們用Vue框架,
入口頁/mall/index.html.
location = /mall/index.html {
add_header Last-Modified $date_gmt;
}
實測有效,希望對大家有幫助
作者:lst
鏈接:https://www.zhihu.com/question/22471239/answer/532057671
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
修改html頁面配置
給你的網頁header加入強制代碼
作者:snowboy
鏈接:https://www.zhihu.com/question/22471239/answer/73510993
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
跳轉-->再跳轉-->(最終我采取的方案)
感覺其中一個回復的想法比較靠譜-->以己之矛,攻己之盾,
既然微信公眾號這么喜歡緩存html頁面,
那么扔給微信公眾號一個空白頁面去緩存,
(前提是微信公眾號只是緩存入口的html頁面,而不是緩存了所有訪問過的html頁面)
決定空白頁面的不變,和要跳轉到真實html頁面變化.
我也遇到這個蛋疼的問題 safari瀏覽器沒問題,android微信沒問題,android系統瀏覽器沒問題ios微信有問題 用了N種辦法都解決不了~最后只有把微信刪了。
(理論上搞定)可用戶不會把為了你的頁面把微信刪掉是吧?
折中的辦法訪問的url鏈接重新指向新的一個url這樣就不會出現問題了。
我是訂閱號發送鏈接的!
注意事項
- 如果修改了空白頁html中的內容,那只能將空白頁html改名,或者清理手機緩存了...
作者:洪隆
鏈接:https://www.zhihu.com/question/22471239/answer/44974283
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
摘抄文檔
微信開放社區
CSN.微信h5頁面緩存
Segmentfault.微信頁面入口文件被緩存解決方案
V2ex.微信內瀏覽器緩存網頁有什么辦法解決啊?
V2ex.微信中打開的網頁怎么刷新緩存?
