360°全景影像優化建議

傳送門 ☞ 輪子的專欄 ☞ 轉載請註明 ☞ http://blog.csdn.net/leverage_1229

1FlexViewer

1.1index.mxml

            它是整個Flex Viewer框架的入口,Flash Player運行時會調用該文件所對應的flash文件來啓動整個系統。Index首頁加載緩慢,該頁面包含大量動態組件,在其加載過程中,這些組件都要經歷構建、屬性處理、測量、佈置和繪製等過程。
建議:
能否提取其中相對靜態或變化頻率較低的組件直接使用讀取xml或文本配置文件方式進行加載。也就是我們常說的CMS模式。

1.2QuanJingMapComponent.mxml

代碼片段

_TextureStrings = new Array(new Vector.<String>,new Vector.<String>);
 // 一級切片
for(var i:int=0;i<8;i++)
 {
  var str:String = url + "_"+ i.toString();
  _TextureStrings[0].push(str);
 }
 // 二級切片
 for(i = 0;i<32;i++)
 {
  var str2:String = url + "_"+ i.toString();
  _TextureStrings[1].push(str2);
 }
 // 將來有三級切片,那麼代碼會像下面這樣
 for(i = 0;i<128;i++)
 {
  var str3:String = url + "_"+ i.toString();
  _TextureStrings[2].push(str3);
 }

        目前程序中使用的切片等級有兩級,我們以一張全景圖像的切片爲例,名爲TextureStrings的二維數組在存儲數據時,會將該圖像一級切片的八張圖片的名稱放置於二維數組的第一行(該行8列),將該圖像二級切片的名稱放置於二維數組的第二行(該行32列)。第二行前面的8列與第一行8列的數據完全相同。如果擴展到三級切片,那麼二維數組的第三行(該行128列)與第二行32列的數據也將是重複的。 TextureStrings這個二維數組用於存放各級切片的圖片名稱,目前這種做法數據冗餘較高,且在onChangeImage函數和onOpenQuanJing函數都會執行。
建議:
(1)能否使用API提供的靜態方法,對Array數據進行直接拷貝操作代替當前的For循環。
(2)增加切片級別標示,根據此標示動態使用TextureStrings存儲以減少For循環次數。
(3)點擊全景影像的交互點(方向箭頭)實現全景影像與底層地圖的聯動,目前延遲時間較長,能否在Load()☞onLoadImage()☞onLoadComp()☞Load()這一基於Complete消息驅動的循環流程中增加線程,進行線程池化管理,以提升全景圖像切片的繪製速率。

2WebService

代碼片段

string strSQL = @"SELECT SLICE_ID ,SLICE_NAME ,PIC_ID ,ALPHA_MAX ,ALPHA_MIN ,BETA_MAX ,BETA_MIN ,Z_MAX ,Z_MIN ,SLICE_CONTENT FROM PIC_SLICE_" + strTableKey + " where SLICE_ID = '" + strID + "'";…
// 獲取影像源數據
imageData = (byte[])dt.Rows[0]["SLICE_CONTENT"];
Response.ContentType = "application/binary;";
// 將影像源數據寫入到客戶端FlexViewer
Response.BinaryWrite(imageData);
…

            當前WebServices接收客戶端請求傳遞而來的tableKey和sliceId,然後根據這兩個參數檢索Oracle數據庫中全景影像切片PIC_SLICE_1(PIC_SLICE_2、PIC_SLICE_3)表中全部字段,最終將SLICE_CONTENT字段對應的Blob類型的影像數據以二進制的方式返回給客戶端實現繪製。
建議:
(1)返回給客戶端的數據只是SLICE_CONTENT字段對應的數據,所以沒有必要檢索切片表中所有字段。
(2)能否爲此端增設緩存磁盤系統。採用LRU算法,以減少該構件與數據庫的交互次數。
(3)WebServices與Flex Viewer使用Http協議連接,有沒有考慮到連接超時、請求超時等連接設置因素所導致的客戶端頁面假死現象。
(4)能否使用遵循.net平臺規範的rest服務框架爲底層來構建此WebService。因爲在傳遞大數據或海量數據時,過於基礎的技術所構建的服務往往不能有效支撐特殊場景業務數據。

3數據庫

        當數據量大時,引入ASM(Automatic Storage Management,自動存儲服務)機制管理全景影像數據和POI數據。

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