2011-03-03 28 views
0

我建立使用的jqGrid 3.8.2(一個JavaScript網格組件)提出的一些數據我都存儲在一個數據庫的ASP.Net MVC 2應用程序。在我的頁面上,我也有一個帶平鋪覆蓋圖的Google地圖。的jqGrid減緩谷歌的地圖

我注意到在地圖上,在這種應用程序比我在不使用jqGrid的其他應用程序平鋪覆蓋的載入時間顯著表現更差。如果jqgrid和map同時請求數據,這會很慢,但是當我縮放/平移地圖時,沒有服務器請求由網格運行。

在我的代碼做一些調試後(添加由位/刪除功能位)我煮它歸結爲:如果配置我的jqGrid使用「數據類型:本地」,它帶來的性能早在地圖上!

一旦我設定「數據類型:JSON」和「網址:[myAspNetMvcController]」的地圖圖塊的加載需要一個很大的打擊。

我的問題是:有沒有人知道爲什麼會這樣?看起來jqGrid在後臺連續不斷地執行任務,即使它沒有被要求獲取任何新數據。我在服務器上有斷點,所以我知道它不會觸發請求。正如我所看到的,它必須是一些jqgrid「魔術」,導致頁面上的其他javascript組件運行緩慢,從而導致請求被延遲。

我去的這條底線,我真的不希望有報廢jqGrid的,因爲我真的很喜歡它,這是非常重要的。

將感謝所有的反饋,可以點我在正確的方向!

+0

你真的使用'datatype:local'和'datatype:json'而不是'datatype:'local''和'datatype:'json''嗎?您可以嘗試從[Fiddler](http://www.fiddler2.com/fiddler2/)或[Firebug](http://getfirebug.com/)捕獲從服務器返回的JSON數據。然後,您可以將JSON數據保存在文本文件中:test.json,並使用該文件的路徑而不是URL到服務器。你收到哪些表現? – Oleg 2011-03-03 23:50:43

回答

0

找到了答案,它原來不被jqGrid的那是壞人,但是服務器端會話店!我使用Session作爲網格數據的緩存,因爲我需要將過濾後的數據用於網格之外的其他用途,並且希望避免重複訪問數據庫。一旦我寫了一些東西給Session對象,服務器就受到了打擊,開始處理所有傳入的請求(通常是幾秒鐘!)。我後來得知,在大多數情況下,不建議使用Session對象進行緩存,但我仍然不知道爲什麼它會導致這樣的令人討厭的副作用。如果有人會啓發我,那會很棒!它不可能是佔用內存很多的服務器上的一個問題,因爲性能寫

Session["test"] = "test"; 

因爲我真正需要的數據在一個會話範圍緩存剛剛落下,我通過,而不是使用解決了這個問題HttpContext.Cache和會話專用密鑰。