2010-07-09 63 views
3

我有一個應用程序在服務器的前端和TurboGears上使用ExtJS。我現在開始添加cookie來處理使用CookieProvider狀態管理器的定製前端。這很酷,但每次通話都會傳遞cookie,這些cookie很大。我擔心性能受到影響。如何不通過ExtJS HTTPRequest中的cookie

總而言之,有沒有一種方法可以阻止某些cookie在調用服務器時被髮送?

  • 戴夫

回答

0

下面是我最終實現的內容:所有定製都存儲在數據庫中。當屏幕正在導航時,我讀取當前用戶的屏幕定製,並使用它在init_component例程中初始化一個簡單的基於內存的狀態提供程序。狀態提供程序偵聽適當的事件並更新內存中狀態。用戶界面具有「首選項」菜單和「保存/重置」選項。保存選項將內存狀態保存到服務器。重置將從數據庫中刪除狀態並使用默認設置重新構建屏幕。這似乎運作良好。

FYI:其他陷阱,我發現:

  • 電網不具備過濾器更換
  • 組合框(其中包括)不用代碼來保存狀態的情況下,你必須寫擁有。
  • 從電網狀態是揮霍(原題)

我實現了每屏狀態控制一個狀態設置,通常只有一個格,但是屏幕上有一個組合加一個網格。它可能會捆綁他們,但缺乏時間會更好...

0

爲了使我們的基礎ExtJS的應用程序沒有cookies工作啓動(這意味着從寫在JS使用AJAX的請求與基於Java的服務器通訊的客戶端的每個請求將創建一個新的會話ID,因此不能被服務器分配給任何特定的會話),我想出了覆蓋ExtJS的AJAX方法並將會話ID添加到每個請求中的非常簡單的方法來解決這個問題。 我從另一個線程那裏瞭解到瞭如何覆蓋Ext.Ajax,以便爲每個調用添加一個特定的參數,並使用這種方式添加會話ID並將「; jsessionid =」附加到每個URL參數。

1

如果你知道你的用戶在使用現代瀏覽器,你可以使用HTML 5本地存儲來代替餅乾

這正是它的意思了。 - 存儲數據,如自定義在客戶端本地

它可以幫助您解決您發送給服務器的Cookie和更小的尺寸限制等問題。

+1

不幸的是,我們的客戶被困在與IE6的石器時代。我最終的解決方案是避免使用cookie並編寫我自己的定製提供程序。這似乎工作到目前爲止。 – dave 2010-07-11 12:21:58

+0

那麼你在哪裏存儲定製?在服務器上? – ob1 2010-07-11 17:12:26

+0

下面是我最終實現的一個簡要說明: 所有自定義都存儲在數據庫中。當屏幕正在導航時,我讀取當前用戶的屏幕定製,並使用它在init_component例程中初始化一個簡單的基於內存的狀態提供程序。狀態提供程序偵聽適當的事件並更新內存中狀態。 用戶界面具有「首選項」菜單和「保存/重置」選項。保存選項將內存狀態保存到服務器。重置將從數據庫中刪除狀態並使用默認設置重新構建屏幕。這似乎運作良好。 – dave 2010-07-18 13:02:26

0

我相信你最後的回答是正確的......但是你應該分享答案,而不是上釉它......我相信你正在以這種方式使用參數,如果不是這樣的話我相信完成你的目標的另一種方式試圖去做。

Ext.Ajax.Request({ 
    url: 'path/to/file.htm', 
    params: { 
     jsessionid: Ext.util.Cookies.get('jsessionid') 
    }, 
    success: function(result, request) { 
     // Callback function for successful request 
    } 
});