国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Django4.0 緩存框架-使用Vary標(biāo)頭

2022-03-17 15:03 更新

Vary 標(biāo)頭定義了緩存機(jī)制在構(gòu)建其緩存鍵時(shí)應(yīng)考慮哪些請(qǐng)求標(biāo)頭。 例如,如果網(wǎng)頁的內(nèi)容取決于用戶的語言偏好,則稱該頁面因語言而異。

默認(rèn)情況下,Django 的緩存系統(tǒng)使用請(qǐng)求的完全合格的URL創(chuàng)建它的緩存密鑰——例如,"https://www.example.com/stories/2005/?order_by=author"。這意味著對(duì)該 URL 的每個(gè)請(qǐng)求都將使用相同的緩存版本,而不管用戶代理差異(如 cookies 或語言首選項(xiàng))。但是,如果這個(gè)頁面基于請(qǐng)求頭(如 cookie、語言或用戶代理)中的某些差異而產(chǎn)生不同的內(nèi)容,則需要使用Vary標(biāo)頭來告訴緩存機(jī)制,頁面輸出取決于這些東西。
要在 Django 中執(zhí)行此操作,請(qǐng)使用方便的? django.views.decorators.vary.vary_on_headers() ?視圖裝飾器,像這樣:

from django.views.decorators.vary import vary_on_headers

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

在這里,一個(gè)緩存機(jī)制(比如 Django 自帶的緩存中間件)將為每一個(gè)唯一的用戶代理緩存一個(gè)獨(dú)立的頁面版本。
使用 ?vary_on_headers ?裝飾器而不是手動(dòng)設(shè)置 Vary 頭(使用 ?response.headers['Vary'] = 'user-agent'?)的好處是,裝飾器 添加 到 Vary頭(可能已經(jīng)存在),而不是從頭開始設(shè)置,可能會(huì)覆蓋已經(jīng)存在的東西。
你可以傳遞多個(gè)headers參數(shù)給 ?vary_on_headers()?:

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

這告訴下游緩存兩者有所不同,意味著每個(gè)用戶代理和 cookie 的組合將獲取它自己的緩存值。比如,一個(gè)請(qǐng)求帶有用戶代理 Mozilla 和 cookie 值 ?foo=bar? 被認(rèn)為和用戶代理 Mozilla 和 cookie 值 ?foo=ham? 是不同的。
因?yàn)?cookie 的變化如此普遍,所以這里有個(gè) ?django.views.decorators.vary.vary_on_cookie()? 裝飾器。這兩個(gè)視圖是等價(jià)的:

@vary_on_cookie
def my_view(request):
    ...

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

傳遞給 ?vary_on_headers ?的headers是不區(qū)分大小寫的;?User-Agent? 和 ?user-agent?是一樣的。
你也可以直接使用幫助函數(shù) ?django.utils.cache.patch_vary_headers()? 。這個(gè)函數(shù)可以設(shè)置或添加 ?Vary header? 。比如:

from django.shortcuts import render
from django.utils.cache import patch_vary_headers

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

?patch_vary_headers ?帶有一個(gè) ?HttpResponse ?作為它的第一個(gè)參數(shù),一個(gè)不區(qū)分大小寫的頭名的列表/元組作為它的第二個(gè)參數(shù)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)