簡體   English   中英

如何使用登錄/注銷處理瀏覽器緩存?

[英]How do you handle browser cache with login/logout?

為了提高性能,我想在每個頁面上添加一個相當長的Cache-Control(最多30分鍾),因為它們不經常更改。 但是,每個頁面還會顯示已登錄用戶的名稱(如本網站)。

問題是用戶登錄或注銷時:用戶名必須更改。 如何在每次登錄/注銷操作之后更改用戶名,同時保持較長的Cache-Control?

這是我能想到的解決方案:

  • Ajax請求(未緩存)以檢索和顯示用戶名。 如果我有2個請求(/ user?registered和/ user?new),它們也可以被緩存。 但是我擔心這個額外的請求會使我的緩存性能無效
  • 添加唯一的URL變量(?time =)以使URL不同,並取消緩存。 但是,我必須將此變量添加到我網頁上的所有鏈接中,而不是很方便的代碼方式

如果我實際上擁有更多與注冊用戶和新用戶不同的內容,則此問題會變得更大。

Cache-Control: private

通常在實踐中就足夠了。 這就是SO所使用的。

從理論上講,如果您需要允許來自同一客戶端的變量登錄,則應該在Cookie上設置Vary (假設這是您用於登錄的機制)。 但是,這個Vary值(以及其他大多數值)完全搞亂了IE的緩存,因此通常避免使用。 另外,通常希望允許用戶瀏覽后退/轉發列表,包括登錄/注銷頁面,而不必重新獲取。

對於必須為每個頁面強制正確登錄(例如銀行業務)的情況,通常使用完整的Cache-Control: no-cache

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM