亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談Python的Django框架中的緩存控制

 更新時(shí)間:2015年07月24日 11:06:02   投稿:goldensun  
這篇文章主要介紹了Python的Django框架中的緩存控制,包括Vary頭部以外的其他頭部使用等,需要的朋友可以參考下

關(guān)于緩存剩下的問(wèn)題是數(shù)據(jù)的隱私性以及在級(jí)聯(lián)緩存中數(shù)據(jù)應(yīng)該在何處儲(chǔ)存的問(wèn)題。

通常用戶將會(huì)面對(duì)兩種緩存: 他或她自己的瀏覽器緩存(私有緩存)以及他或她的提供者緩存(公共緩存)。 公共緩存由多個(gè)用戶使用,而受其他某人的控制。 這就產(chǎn)生了你不想遇到的敏感數(shù)據(jù)的問(wèn)題,比如說(shuō)你的銀行賬號(hào)被存儲(chǔ)在公眾緩存中。 因此,Web 應(yīng)用程序需要以某種方式告訴緩存那些數(shù)據(jù)是私有的,哪些是公共的。

解決方案是標(biāo)示出某個(gè)頁(yè)面緩存應(yīng)當(dāng)是私有的。 要在 Django 中完成此項(xiàng)工作,可使用 cache_control 視圖修飾器: 例如:

from django.views.decorators.cache import cache_control

@cache_control(private=True)
def my_view(request):
  # ...

該修飾器負(fù)責(zé)在后臺(tái)發(fā)送相應(yīng)的 HTTP 頭部。

還有一些其他方法可以控制緩存參數(shù)。 例如, HTTP 允許應(yīng)用程序執(zhí)行如下操作:

  •     定義頁(yè)面可以被緩存的最大時(shí)間。
  •     指定某個(gè)緩存是否總是檢查較新版本,僅當(dāng)無(wú)更新時(shí)才傳遞所緩存內(nèi)容。 (一些緩存即便在服務(wù)器頁(yè)面發(fā)生變化的情況下仍然會(huì)傳送所緩存的內(nèi)容,只因?yàn)榫彺婵截悰](méi)有過(guò)期。)

在 Django 中,可使用 cache_control 視圖修飾器指定這些緩存參數(shù)。 在本例中, cache_control 告訴緩存對(duì)每次訪問(wèn)都重新驗(yàn)證緩存并在最長(zhǎng) 3600 秒內(nèi)保存所緩存版本:

from django.views.decorators.cache import cache_control

@cache_control(must_revalidate=True, max_age=3600)
def my_view(request):
  # ...

在 cache_control() 中,任何合法的Cache-Control HTTP 指令都是有效的。下面是完整列表:

  public=True

  private=True

  no_cache=True

  no_transform=True

  must_revalidate=True

  proxy_revalidate=True

  max_age=num_seconds

  s_maxage=num_seconds

緩存中間件已經(jīng)使用 CACHE_MIDDLEWARE_SETTINGS 設(shè)置設(shè)定了緩存頭部 max-age 。 如果你在cache_control修飾器中使用了自定義的max_age,該修飾器將會(huì)取得優(yōu)先權(quán),該頭部的值將被正確地被合并。

如果你想用頭部完全禁掉緩存,django.views.decorators.cache.never_cache裝飾器可以添加確保響應(yīng)不被緩存的頭部信息。 例如:

from django.views.decorators.cache import never_cache

@never_cache
def myview(request):
  # ...

其他優(yōu)化

Django 帶有一些其它中間件可幫助您優(yōu)化應(yīng)用程序的性能:

  •     django.middleware.http.ConditionalGetMiddleware 為現(xiàn)代瀏覽器增加了有條件的,基于 ETag 和 Last-Modified 頭標(biāo)的GET響應(yīng)的相關(guān)支持。
  •     django.middleware.gzip.GZipMiddleware 為所有現(xiàn)代瀏覽器壓縮響應(yīng)內(nèi)容,以節(jié)省帶寬和傳送時(shí)間。

MIDDLEWARE_CLASSES 的順序

如果使用緩存中間件,注意在MIDDLEWARE_CLASSES設(shè)置中正確配置。 因?yàn)榫彺嬷虚g件需要知道哪些頭部信息由哪些緩存區(qū)來(lái)區(qū)分。 中間件總是盡可能得想Vary響應(yīng)頭中添加信息。

UpdateCacheMiddleware在相應(yīng)階段運(yùn)行。因?yàn)橹虚g件是以相反順序運(yùn)行的,所有列表頂部的中間件反而last在相應(yīng)階段的最后運(yùn)行。 所有,你需要確保UpdateCacheMiddleware排在任何可能往Vary頭部添加信息的中間件之前。 下面的中間件模塊就是這樣的:

  •     添加 Cookie 的 SessionMiddleware
  •     添加 Accept-Encoding 的 GZipMiddleware
  •     添加Accept-Language的LocaleMiddleware

另一方面,F(xiàn)etchFromCacheMiddleware在請(qǐng)求階段運(yùn)行,這時(shí)中間件循序執(zhí)行,所以列表頂端的項(xiàng)目會(huì)首先執(zhí)行。 FetchFromCacheMiddleware也需要在會(huì)修改Vary頭部的中間件之后運(yùn)行,所以FetchFromCacheMiddleware必須放在它們后面。

相關(guān)文章

  • python多線程socket編程之多客戶端接入

    python多線程socket編程之多客戶端接入

    這篇文章主要為大家詳細(xì)介紹了python多線程socket編程之多客戶端接入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • python判斷all函數(shù)輸出結(jié)果是否為true的方法

    python判斷all函數(shù)輸出結(jié)果是否為true的方法

    在本篇內(nèi)容里小編給各位整理的是一篇關(guān)于python判斷all函數(shù)輸出結(jié)果是否為true的方法,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python如何獲取文件路徑/目錄

    Python如何獲取文件路徑/目錄

    這篇文章主要介紹了Python如何獲取文件路徑/目錄,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下
    2020-09-09
  • python字典快速保存于讀取的方法

    python字典快速保存于讀取的方法

    下面小編就為大家分享一篇python字典快速保存于讀取的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • python實(shí)現(xiàn)處理Excel表格超詳細(xì)系列

    python實(shí)現(xiàn)處理Excel表格超詳細(xì)系列

    這篇文章主要介紹了python實(shí)現(xiàn)處理Excel表格超詳細(xì)系列,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Python文件夾與文件的相關(guān)操作(推薦)

    Python文件夾與文件的相關(guān)操作(推薦)

    下面小編就為大家?guī)?lái)一篇Python文件夾與文件的相關(guān)操作(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • Windows上使用Python增加或刪除權(quán)限的方法

    Windows上使用Python增加或刪除權(quán)限的方法

    下面小編就為大家分享一篇Windows上使用Python增加或刪除權(quán)限的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 解決reload(sys)后print失效的問(wèn)題

    解決reload(sys)后print失效的問(wèn)題

    這篇文章主要介紹了解決reload(sys)后print失效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python 求一個(gè)列表中所有元素的乘積實(shí)例

    python 求一個(gè)列表中所有元素的乘積實(shí)例

    今天小編就為大家分享一篇python 求一個(gè)列表中所有元素的乘積實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python中定時(shí)器用法詳解之Timer定時(shí)器和schedule庫(kù)

    Python中定時(shí)器用法詳解之Timer定時(shí)器和schedule庫(kù)

    目前所在的項(xiàng)目組需要經(jīng)常執(zhí)行一些定時(shí)任務(wù),于是選擇使用 Python 的定時(shí)器,下面這篇文章主要給大家介紹了關(guān)于Python中定時(shí)器用法詳解之Timer定時(shí)器和schedule庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2024-02-02

最新評(píng)論