Laya版本管理

1.7.15beta開始,打開發布界面,最後一項是管理是否啓用版本管理的功能

啓用版本管理之後,將會生成帶hash的文件名,並生成一個version.json的文件名映射文件,在項目中可以通過使用ResourceVersion類進行版本控制,使用版本控制之後就會在加載時自動去加載帶hash的文件名。

代碼中通過ResourceVersion類加載管理資源版本

啓用版本管理後,資源名會被加上hash值,如資源原始名字爲cicrle.png,啓用版本管理後,資源名會加上hash值變成cicrle_000223.png(也可能是其他),這時候如果直接請求加載資源,控制檯就會提示不存在版本號,不能加載cicrle.png。

實際上,啓用版本管理後,會在登錄時加載version.json文件,代碼中請求加載資源時,引擎會自動添加資源的版本信息,加載帶hash值的資源。每次新發布資源,版本號就會更新,如果資源沒更新,資源生成的帶hash值的文件名也不會變。對於圖集中的資源,即使只修改了圖集中的某一個資源,使用其他資源時,如果圖集的版本號不對,請求加載圖集資源時也會提示不存在版本號,因爲圖集資源被修改了,整個圖集的版本號自然也變了,圖集版本號都變了,當然就提示不存在版本號了。

由於只在登錄的時候纔會更新version.json版本文件(如果設置了緩存還得清緩存),這樣就會出現一個問題。如果A玩家登錄後,程序修改了資源,啓用了版本管理,這時候再發布一次項目(新的客戶端),圖集B的版本號被修改了,被修改之後,玩家再打開需要加載圖集B的界面,這時候會根據登錄時的version.json映射到之前的版本號圖集,由於圖集B的版本號已被修改,所以會提示不存在版本號,刷新即可解決。開發環境下可以只存一份版本資源,刷新就行,但是線上考慮到要支持熱更,所以需要存兩份版本資源,一份最新的,一份之前的,如果某資源版本號被修改,就會去映射到之前的版本號資源,提升用戶體驗。

這樣做的好處,就是避免一些緩存比較嚴重,而且很難清理的運行環境下。用於版本升級更新。因爲不是所有的用戶都會設置不設緩存的,而且就算設置了不設緩存,也會有前提要求,比如Chrome的不設緩存還有個開發者模式下才生效的前提。啓用版本管理後,資源更新,資源版本更新,資源hash值不一樣,資源帶hash值的文件名也不一樣,加載被修改過的資源時就會去加載最新的資源了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章