最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Vary 頭部定義了緩存機(jī)制在構(gòu)建其緩存鍵值時(shí)應(yīng)當(dāng)將哪個(gè)請(qǐng)求頭標(biāo)考慮在內(nèi)。 例如,如果網(wǎng)頁的內(nèi)容取決于用戶的語言偏好,該頁面被稱為根據(jù)語言而不同。

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

要在 Django 完成這項(xiàng)工作,可使用便利的 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):
  # ...

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

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

你可以向 vary_on_headers() 傳入多個(gè)頭標(biāo):

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

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

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

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

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

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

你也可以直接使用幫助函數(shù):django.utils.cache.patch_vary_headers。 該函數(shù)設(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 以一個(gè) HttpResponse 實(shí)例為第一個(gè)參數(shù),以一個(gè)大小寫不敏感的頭標(biāo)名稱列表或元組為第二個(gè)參數(shù)。

相關(guān)文章

  • Pycharm虛擬環(huán)境pip時(shí)報(bào)錯(cuò):no?suchoption:--bulid-dir的解決辦法

    Pycharm虛擬環(huán)境pip時(shí)報(bào)錯(cuò):no?suchoption:--bulid-dir的解決辦法

    最近在工作中遇到了些問題,想著大家應(yīng)該也會(huì)遇到過,所以給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于Pycharm虛擬環(huán)境pip時(shí)報(bào)錯(cuò):no?suchoption:?--bulid-dir的解決辦法,需要的朋友可以參考下
    2022-07-07
  • Python安裝配置OpenGL環(huán)境的全過程記錄

    Python安裝配置OpenGL環(huán)境的全過程記錄

    這篇文章主要給大家介紹了關(guān)于Python安裝配置OpenGL環(huán)境的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 如何使用python批量修改文本文件編碼格式

    如何使用python批量修改文本文件編碼格式

    把文本文件的編碼格式進(jìn)行批量幻化,比如ascii, gb2312, utf8等,相互轉(zhuǎn)化,字符集的大小來看,utf8>gb2312>ascii,因此最好把gb2312轉(zhuǎn)為utf8,否則容易出現(xiàn)亂碼,這篇文章主要介紹了如何使用python批量修改文本文件編碼格式,需要的朋友可以參考下
    2023-03-03
  • python pandas 如何替換某列的一個(gè)值

    python pandas 如何替換某列的一個(gè)值

    python pandas 如何替換某列的一個(gè)值?今天小編就為大家分享一篇python pandas 實(shí)現(xiàn)替換某列的一個(gè)值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助
    2018-06-06
  • python實(shí)操案例練習(xí)(七)

    python實(shí)操案例練習(xí)(七)

    這篇文章主要介紹了python實(shí)操案例練習(xí),本文給大家分享的案例中主要任務(wù)有編寫程序?qū)崿F(xiàn)樂手彈奏樂器、使用面向?qū)ο笤O(shè)計(jì)自定義類,描述出租車和家用轎車的信息,需要的小伙伴可以參考一下
    2022-02-02
  • 利用Python為iOS10生成圖標(biāo)和截屏

    利用Python為iOS10生成圖標(biāo)和截屏

    這篇文章主要為大家詳細(xì)介紹了利用Python為iOS10生成圖標(biāo)和截屏的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 使用Python進(jìn)行圖像批處理的方法示例

    使用Python進(jìn)行圖像批處理的方法示例

    在Python中進(jìn)行圖像批處理可以使用多種庫,如 Pillow、OpenCV 和 imageio,這些庫可以用來執(zhí)行各種圖像處理任務(wù),如調(diào)整大小、裁剪、旋轉(zhuǎn)、濾鏡應(yīng)用等,以下是使用這些庫進(jìn)行圖像批處理的示例,需要的朋友可以參考下
    2024-09-09
  • Python正則表達(dá)式中的量詞符號(hào)與組問題小結(jié)

    Python正則表達(dá)式中的量詞符號(hào)與組問題小結(jié)

    這篇文章主要介紹了Python正則表達(dá)式中的量詞符號(hào)與組問題小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Python基于pyjnius庫實(shí)現(xiàn)訪問java類

    Python基于pyjnius庫實(shí)現(xiàn)訪問java類

    這篇文章主要介紹了Python基于pyjnius庫實(shí)現(xiàn)訪問java類,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 零基礎(chǔ)寫python爬蟲之抓取百度貼吧代碼分享

    零基礎(chǔ)寫python爬蟲之抓取百度貼吧代碼分享

    前面幾篇都是以介紹基礎(chǔ)知識(shí)為主,各位童鞋估計(jì)都在犯嘀咕了,你到底寫不寫爬蟲????額,好吧,本文就給大家寫一個(gè)簡(jiǎn)單的百度貼吧的python爬蟲代碼。
    2014-11-11

最新評(píng)論

界首市| 八宿县| 昌都县| 苍梧县| 勃利县| 和硕县| 隆安县| 遂川县| 卢龙县| 周至县| 乳山市| 陕西省| 凤山市| 元阳县| 高安市| 交口县| 万盛区| 阿图什市| 青铜峡市| 平昌县| 上虞市| 新河县| 颍上县| 富顺县| 东乌珠穆沁旗| 台东市| 湖北省| 潞城市| 台南市| 庆城县| 陵水| 阆中市| 土默特右旗| 宁明县| 亚东县| 新闻| 塔河县| 定结县| 自治县| 清镇市| 老河口市|