最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決微信瀏覽器緩存站點(diǎn)入口文件(IIS部署Vue項(xiàng)目)

 更新時(shí)間:2019年06月17日 14:24:26   作者:返回主頁(yè) 沉淀的風(fēng)  
這篇文章主要介紹了解決微信瀏覽器緩存站點(diǎn)入口文件(IIS部署Vue項(xiàng)目),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

最近開(kāi)發(fā)的微信公眾號(hào)項(xiàng)目中(項(xiàng)目采用Vue + Vux 構(gòu)建,站點(diǎn)部署在IIS8.5上),遇到個(gè)非常奇葩的問(wèn)題,發(fā)布站點(diǎn)內(nèi)容后,通過(guò)微信打開(kāi)網(wǎng)址發(fā)現(xiàn)是空白頁(yè)面(后來(lái)驗(yàn)證是微信瀏覽器緩存了入口文件-index.html,顧之前版本的index頁(yè)面找不到對(duì)應(yīng)的js,因?yàn)槲覀兠看伟l(fā)布會(huì)將之前的版本放至另外的備份目錄),但關(guān)閉網(wǎng)頁(yè)再次去打開(kāi)又是正常的。最初開(kāi)發(fā)內(nèi)部測(cè)試時(shí)該問(wèn)題沒(méi)有引起關(guān)注,因?yàn)殚_(kāi)發(fā)人員大部分都是android的手機(jī),后來(lái)測(cè)試發(fā)現(xiàn),某些android機(jī)型不是必現(xiàn)此問(wèn)題,但是蘋(píng)果(IOS)機(jī)型,每次都是必然發(fā)生。

百度千百回#

在客戶(hù)反饋此問(wèn)題后,如噩夢(mèng)般的探索解決過(guò)程就此開(kāi)始了。因?yàn)樵陂_(kāi)發(fā)機(jī)器上根本無(wú)法測(cè)試,每次都必須打包發(fā)布。并且,在問(wèn)題發(fā)生后,團(tuán)隊(duì)內(nèi)部最初討論并不認(rèn)為是緩存了站點(diǎn)的入口文件(某些android機(jī)型不會(huì)發(fā)生此現(xiàn)象),而是緩存了其他js文件,所以一開(kāi)始的解決方向就是錯(cuò)誤的,導(dǎo)致浪費(fèi)了很多時(shí)間。

1. Vue項(xiàng)目打包發(fā)布時(shí),文件加上版本號(hào)#

其實(shí)在用vue-cli 3.0腳手架構(gòu)建的Vue項(xiàng)目,打包過(guò)程中輸出的靜態(tài)文件名已經(jīng)做了hash處理, webpack.prod.conf.js 中配置如下:

output: {
  path: config.build.assetsRoot,
  filename: utils.assetsPath('js/[name].[chunkhash].js'),
  chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
 },

但我們還是嘗試在此處加上時(shí)間戳,如:

'js/[id].[chunkhash]'+ new Date().getTime() +'.js'

結(jié)果是此方案沒(méi)有生效,失敗次數(shù)1。

2. 嘗試將Vue-Router 的history模式改為hash模式#

這種思路,還是延續(xù)了前一種方案的錯(cuò)誤思路,認(rèn)為是瀏覽器緩存了某些js文件,由于js文件找不到報(bào)錯(cuò),導(dǎo)致頁(yè)面空白。想要通過(guò)路由的hash模式 + 文件的版本號(hào),來(lái)解決此問(wèn)題。因?yàn)槲覀兊捻?xiàng)目是采用的history模式(微信授權(quán)和站點(diǎn)部署在IIS某個(gè)子目錄下的原因)。

后來(lái)驗(yàn)證這是完全的錯(cuò)誤思路,失敗次數(shù)2。

3. 路由跳轉(zhuǎn)前攔截處理#

嘗試此方案的時(shí)候,已經(jīng)知曉產(chǎn)生該問(wèn)題的原因,是由于微信瀏覽器緩存了入口文件(index.html),是想嘗試在訪問(wèn)某個(gè)頁(yè)面時(shí),先執(zhí)行跳轉(zhuǎn)至加了版本號(hào)的index頁(yè)面。具體實(shí)現(xiàn)思路:

router.beforeEach((to, from, next){
  // 實(shí)現(xiàn)某些跳轉(zhuǎn)邏輯
}

因?yàn)樽罱K的嘗試失敗了,這里就不再撰述邏輯,失敗次數(shù)3。

4. 給微信公眾號(hào)菜單鏈接加上特定版本號(hào)#

該方案只能是用于臨時(shí)解決,內(nèi)部做調(diào)測(cè)還可以,但如果用于正式生產(chǎn)環(huán)境,會(huì)非常麻煩,需要每次發(fā)布更新后,都去更改微信公眾號(hào)的菜單鏈接。如下引用所示,在鏈接上加版本號(hào):

http://yqwx.xx.com/index.html?vt=1234

因?yàn)檫@種方案,幾乎不可能用于生產(chǎn)環(huán)境,失敗次數(shù)4.

5. 嘗試將站點(diǎn)部署到nginx上#

我們的項(xiàng)目是部署在IIS上的,但百度“微信瀏覽器緩存入口文件”問(wèn)題,幾乎所有文章中提到的網(wǎng)站都是部署在nginx上,有些解決此問(wèn)題的方案,都是設(shè)置nginx,如以下幾篇參考文中所例的設(shè)置:

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js)$ {
  root  /mnt/dat1/test/tes-app;
  #### kill cache
  add_header Last-Modified $date_gmt;
  add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
  if_modified_since off;
  expires off;
  etag off;
}

我們也嘗試了安裝nginx, 不過(guò)受項(xiàng)目其他因素影響,后來(lái)放棄了此方案,失敗次數(shù)5。

驀然回首,它在此處#

雖然以上幾種解決方案的嘗試,都以失敗告終,但至少我們知曉了造成該問(wèn)題的原因是由于微信瀏覽器緩存了站點(diǎn)入口文件(index.html),并嘗試去從Web服務(wù)器(IIS)的配置去解決(因?yàn)樵趎ginx上可以設(shè)置某些緩存,那么在IIS上應(yīng)該也是可以的)。

最終的解決方案非常簡(jiǎn)單的,簡(jiǎn)單到我們都懷疑人生,哈哈。

在IIS中配置, 如下圖所示:

http響應(yīng)頭

http響應(yīng)標(biāo)頭

解決該問(wèn)題的過(guò)程是非常痛苦的,顧以此文記錄,以示我們踩過(guò)的坑。

總結(jié)

以上所述是小編給大家介紹的解決微信瀏覽器緩存站點(diǎn)入口文件(IIS部署Vue項(xiàng)目),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

  • 一文搞懂Vue3中toRef和toRefs的區(qū)別

    一文搞懂Vue3中toRef和toRefs的區(qū)別

    toRef 和 toRefs都是Vue3 中的響應(yīng)式轉(zhuǎn)換工具函數(shù),換句話(huà)說(shuō),toRef 和 toRefs 就是用來(lái)創(chuàng)建響應(yīng)式的引用的,主要用來(lái)取出響應(yīng)式對(duì)象里的屬性,或者解構(gòu)響應(yīng)式對(duì)象,本文小編就來(lái)帶大家搞清楚Vue3中toRef和toRefs的區(qū)別,需要的朋友可以參考下
    2023-09-09
  • 解決ant Design中this.props.form.validateFields未執(zhí)行的問(wèn)題

    解決ant Design中this.props.form.validateFields未執(zhí)行的問(wèn)題

    這篇文章主要介紹了解決ant Design中this.props.form.validateFields未執(zhí)行的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • vue實(shí)現(xiàn)帶放大鏡的搜索框

    vue實(shí)現(xiàn)帶放大鏡的搜索框

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)帶放大鏡的搜索框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vscode中的vue項(xiàng)目報(bào)錯(cuò)Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)

    vscode中的vue項(xiàng)目報(bào)錯(cuò)Property ‘xxx‘ does not exist on type ‘Combin

    這篇文章主要介紹了vscode中的vue項(xiàng)目報(bào)錯(cuò)Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 詳解element-ui 組件el-autocomplete使用踩坑記錄

    詳解element-ui 組件el-autocomplete使用踩坑記錄

    最近使用了el-autocomplete組件,本文主要介紹了element-ui 組件el-autocomplete使用踩坑記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue+rem自定義輪播圖效果

    vue+rem自定義輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了vue+rem自定義輪播圖效果,手指觸摸左滑和右滑,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue3 組件庫(kù)的環(huán)境配置搭建過(guò)程

    Vue3 組件庫(kù)的環(huán)境配置搭建過(guò)程

    這篇文章主要介紹了Vue3 組件庫(kù)的環(huán)境配置搭建過(guò)程,使用 Vite+Ts 開(kāi)發(fā)的是 Vue3 組件庫(kù),所以我們需要安裝 typescript、vue3,同時(shí)項(xiàng)目將采用 Less 進(jìn)行組件庫(kù)樣式的管理,需要的朋友可以參考下
    2023-03-03
  • vue3基礎(chǔ)知識(shí)剖析

    vue3基礎(chǔ)知識(shí)剖析

    筆者這篇文章會(huì)從vue3基礎(chǔ)的知識(shí)點(diǎn)開(kāi)始剖析,特別是在將composition?API的時(shí)候,在代碼示例中不會(huì)一上來(lái)就使用setup語(yǔ)法糖,而是用早期的setup函數(shù),這樣方便于初學(xué)的小伙伴們理解跟學(xué)習(xí)
    2022-08-08
  • Vue狀態(tài)機(jī)的開(kāi)啟與停止操作詳細(xì)講解

    Vue狀態(tài)機(jī)的開(kāi)啟與停止操作詳細(xì)講解

    Vuex是專(zhuān)門(mén)為Vuejs應(yīng)用程序設(shè)計(jì)的狀態(tài)管理工具,這篇文章主要給大家介紹了關(guān)于Vuex狀態(tài)機(jī)快速了解與實(shí)例應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Vue+ElementUI之Tree的使用方法

    Vue+ElementUI之Tree的使用方法

    這篇文章主要為大家詳細(xì)介紹了Vue+ElementUI之Tree的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05

最新評(píng)論

岑溪市| 樟树市| 西昌市| 宿州市| 卫辉市| 永兴县| 丁青县| 砚山县| 运城市| 上饶县| 亳州市| 哈巴河县| 启东市| 海盐县| 朝阳区| 河北省| 彭阳县| 陕西省| 耒阳市| 赣州市| 黄骅市| 马龙县| 淮南市| 台东市| 民县| 广河县| 秭归县| 准格尔旗| 融水| 昌邑市| 买车| 新龙县| 遂昌县| 靖西县| 都安| 福清市| 安仁县| 蒲城县| 莱西市| 兴仁县| 淳化县|