欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Django緩存處理中Vary頭部的使用

 更新時間:2015年07月24日 10:51:32   投稿:goldensun  
這篇文章主要介紹了詳解Django緩存處理中Vary頭部的使用,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下

Vary 頭部定義了緩存機制在構建其緩存鍵值時應當將哪個請求頭標考慮在內。 例如,如果網(wǎng)頁的內容取決于用戶的語言偏好,該頁面被稱為根據(jù)語言而不同。

缺省情況下,Django 的緩存系統(tǒng)使用所請求的路徑(比如:"/stories/2005/jun/23/bank_robbed/" )來創(chuàng)建其緩存鍵。這意味著每次請求都會使用同樣的緩存版本,不考慮才客戶端cookie和語言配置的不同。 除非你使用Vary頭部通知緩存機制頁面輸出要依據(jù)請求頭里的cookie,語言等的設置而不同。

要在 Django 完成這項工作,可使用便利的 vary_on_headers 視圖裝飾器,如下所示:

from django.views.decorators.vary import vary_on_headers

# Python 2.3 syntax.
def my_view(request):
  # ...
my_view = vary_on_headers(my_view, 'User-Agent')

# Python 2.4+ decorator syntax.
@vary_on_headers('User-Agent')
def my_view(request):
  # ...

在這種情況下,緩存機制(如 Django 自己的緩存中間件)將會為每一個單獨的用戶瀏覽器緩存一個獨立的頁面版本。

使用 vary_on_headers 裝飾器而不是手動設置 Vary 頭部(使用像 response['Vary'] = 'user-agent' 之類的代碼)的好處是修飾器在(可能已經(jīng)存在的) Vary 之上進行 添加 ,而不是從零開始設置,且可能覆蓋該處已經(jīng)存在的設置。

你可以向 vary_on_headers() 傳入多個頭標:

@vary_on_headers('User-Agent', 'Cookie')
def my_view(request):
  # ...

該段代碼通知上游緩存對 兩者 都進行不同操作,也就是說 user-agent 和 cookie 的每種組合都應獲取自己的緩存值。 舉例來說,使用 Mozilla 作為 user-agent 而 foo=bar 作為 cookie 值的請求應該和使用 Mozilla 作為 user-agent 而 foo=ham 的請求應該被視為不同請求。

由于根據(jù) cookie 而區(qū)分對待是很常見的情況,因此有 vary_on_cookie 裝飾器。 以下兩個視圖是等效的:

@vary_on_cookie
def my_view(request):
  # ...

@vary_on_headers('Cookie')
def my_view(request):
  # ...

傳入 vary_on_headers 頭標是大小寫不敏感的; "User-Agent" 與 "user-agent" 完全相同。

你也可以直接使用幫助函數(shù):django.utils.cache.patch_vary_headers。 該函數(shù)設置或增加 Vary header ,例如:

from django.utils.cache import patch_vary_headers

def my_view(request):
  # ...
  response = render_to_response('template_name', context)
  patch_vary_headers(response, ['Cookie'])
  return response

patch_vary_headers 以一個 HttpResponse 實例為第一個參數(shù),以一個大小寫不敏感的頭標名稱列表或元組為第二個參數(shù)。

相關文章

  • 關于Python-pip安裝失敗問題及解決

    關于Python-pip安裝失敗問題及解決

    這篇文章主要介紹了關于Python-pip安裝失敗問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • python標準算法實現(xiàn)數(shù)組全排列的方法

    python標準算法實現(xiàn)數(shù)組全排列的方法

    這篇文章主要介紹了python標準算法實現(xiàn)數(shù)組全排列的方法,實例分析了全排列的原理與Python實現(xiàn)技巧,需要的朋友可以參考下
    2015-03-03
  • plt.figure()參數(shù)使用詳解及運行演示

    plt.figure()參數(shù)使用詳解及運行演示

    這篇文章主要介紹了plt.figure()參數(shù)使用詳解及運行演示,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python基礎之輸入與輸出

    python基礎之輸入與輸出

    這篇文章主要介紹了python的輸入與輸出,實例分析了Python中返回一個返回值與多個返回值的方法,需要的朋友可以參考下
    2021-10-10
  • 使用python爬取抖音視頻列表信息

    使用python爬取抖音視頻列表信息

    這篇文章主要介紹了如何用python爬取抖音視頻列表信息,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • Python Pytorch深度學習之圖像分類器

    Python Pytorch深度學習之圖像分類器

    今天小編就為大家分享一篇關于Pytorch圖像分類器的文章,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-10-10
  • pytorch中transform.Compose()用法詳解

    pytorch中transform.Compose()用法詳解

    PyTorch是一個開源的Python機器學習庫,基于Torch,用于自然語言處理等應用程序,這篇文章主要介紹了pytorch中transform.Compose()用法,需要的朋友可以參考下
    2023-10-10
  • python通過post提交數(shù)據(jù)的方法

    python通過post提交數(shù)據(jù)的方法

    這篇文章主要介紹了python通過post提交數(shù)據(jù)的方法,涉及Python使用post方式傳遞數(shù)據(jù)的相關技巧,需要的朋友可以參考下
    2015-05-05
  • 簡單講解Python中的閉包

    簡單講解Python中的閉包

    這篇文章主要介紹了Python中的閉包,是Python入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • Python數(shù)據(jù)可視化plt.savefig如何將圖片存入固定路徑

    Python數(shù)據(jù)可視化plt.savefig如何將圖片存入固定路徑

    這篇文章主要介紹了Python數(shù)據(jù)可視化plt.savefig如何將圖片存入固定路徑問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論