目前偶爾有用戶反饋微信服務號白屏問題。主要分兩種:
1:服務號上傳圖片OCR識別頁面突然白屏重新loading問題。
2:用戶點擊服務號菜單欄,進入相應頁面loading白屏問題。
我們主要是Vue框架。面對第一種問題,經過分析發現,我們上傳圖片用的lrz三方庫壓縮成文件流上傳。當如果涉及到大量圖片壓縮上傳,用戶頻繁操作就會觸發瀏覽器內存過大崩潰,重新loading的機制。微信服務號web瀏覽器會崩潰,用safari瀏覽器測試也會出現。目前6plus和一個用戶手機反饋過。量少所以沒有繼續升入優化。估計優化方向,lrz壓縮內存優化
第二種問題,也有一定發生頻率。常見於項目發包後。經過設備信息收集,用戶日誌分析。最終確認問題出在用戶點擊服務號菜單獲取授權成功,進入web包路由時出問題。判斷是瀏覽器緩存導致。針對這個問題,前端優化方案,在webpack打包文件webpack.prod.conf.js中修改相關配置。
const Version = new Date().getTime();
1.在 出口文件 output 配置加入時間戳,減少打包static文件中js和css文件緩存。代碼如下:
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].' + Version + '.js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].' + Version + '.js')
},
2.在html加載腳本添加時間戳防止緩存。代碼如下:
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'index.html',
hash:Version,// 加載腳本時候去緩存
然後服務端也需要修改nginx配置,讓index.html不緩存。
修改如下
location = /index.html {
add_header Cache-Control "no-cache, no-store";
}
但是經過實驗,發現後端和運維切換後還是會出現白屏,緩存問題並沒有得到根治,具體服務端index.html去緩存如何配置,還需要繼續探索,後面如果解決了再更新