2012-01-20 75 views
4

我對web開發很新穎。我正在與Flask,Sqlalchemy和Postgresql合作。有關服務器端會話使用緩存或基於會話的cookie的疑問

據我所知,每一個新的請求都像是程序的一個新線程。新的sqlalchemy會話是使用我們管理我們的數據庫操作並返回響應而創建的。之後,新的線程也關閉,連接返回到池。

我登錄一個用戶並獲取用戶orm對象中的所有用戶數據。我將它存儲在使用cookie的flask會話變量中。現在我還想爲整個用戶會話的跨度保存一些其他用戶相關數據而不是請求。我懷疑將所有數據存儲在cookie中的原因有兩個:

1. Unnecessary data travel back and forth. 
2. data can be read easily. 

我的懷疑是否有效?

所以我的其他問題是:

  1. 我說得對不對在一定程度上避免讓每個請求中一些會話範圍內的數據沒有進入過早優化的陷阱? 或 當我需要時,我應該擔心這一點,現在只專注於創建一個工作的應用程序?

  2. 基於cookie的會話的替代方案是服務器端會話,可以通過使用redis或memcache來完成。燒杯庫在哪裏進入?它是獨立的東西,還是與redis或memcache結合使用?

+0

燒杯是memcached的python包裝。它也支持服務器端會話,所以只需使用燒杯。 –

回答

1

大多數瀏覽器支持高達4096字節的cookie。 (Source

如果您想要比此節省更多,則應該使用服務器端會話後端(如Redis或Memcache)。使用Redis或Memcache界面替換Flask的默認cookie會話界面非常容易。有Armin的great snippet for redis。如果你使用相同的memcache方法,你可以使用prefere memcache來替換代碼片段的redis內容。 ;)