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

django開發(fā)教程之利用緩存文件進(jìn)行頁面緩存的方法

 更新時(shí)間:2017年11月10日 11:19:46   作者:北漂的雷子  
緩存相信對(duì)各位程序員們來說都不陌生,下面這篇文章主要給大家介紹了關(guān)于django開發(fā)教程之利用緩存文件進(jìn)行頁面緩存的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

由于Django是動(dòng)態(tài)網(wǎng)站,所有每次請(qǐng)求均會(huì)去數(shù)據(jù)進(jìn)行相應(yīng)的操作,當(dāng)程序訪問量大時(shí),耗時(shí)必然會(huì)更加明顯,最簡單解決方式是使用:緩存,緩存將一個(gè)某個(gè)views的返回值保存至內(nèi)存或者Redis中,5分鐘內(nèi)再有人來訪問時(shí),則不再去執(zhí)行view中的操作,而是直接從內(nèi)存或者Redis中之前緩存的內(nèi)容拿到,并返回。

首先我們先來了解下瀏覽器的緩存

瀏覽器緩存機(jī)制

Cache-control策略Cache-Control與Expires的作用一致,都是指明當(dāng)前資源的有效期,控制瀏覽器是否直接從瀏覽器緩存取數(shù)據(jù)還是重新發(fā)請(qǐng)求到服務(wù)器取數(shù)據(jù)。只不過Cache-Control的選擇更多,設(shè)置更細(xì)致,如果同時(shí)設(shè)置的話,其優(yōu)先級(jí)高于Expires。

還是上面那個(gè)請(qǐng)求,web服務(wù)器返回的Cache-Control頭的值為max-age=300,即5分鐘(和上面的Expires時(shí)間一致,這個(gè)不是必須的)。

Last-Modified/If-Modified-SinceLast-Modified/If-Modified-Since要配合Cache-Control使用。lLast-Modified:標(biāo)示這個(gè)響應(yīng)資源的最后修改時(shí)間。web服務(wù)器在響應(yīng)請(qǐng)求時(shí),告訴瀏覽器資源的最后修改時(shí)間。lIf-Modified-Since:當(dāng)資源過期時(shí)(使用Cache-Control標(biāo)識(shí)的max-age),發(fā)現(xiàn)資源具有Last-Modified聲明,則再次向web服務(wù)器請(qǐng)求時(shí)帶上頭If-Modified-Since,表示請(qǐng)求時(shí)間。web服務(wù)器收到請(qǐng)求后發(fā)現(xiàn)有頭If-Modified-Since則與被請(qǐng)求資源的最后修改時(shí)間進(jìn)行比對(duì)。若最后修改時(shí)間較新,說明資源又被改動(dòng)過,則響應(yīng)整片資源內(nèi)容(寫在響應(yīng)消息包體內(nèi)),HTTP 200;若最后修改時(shí)間較舊,說明資源無新修改,則響應(yīng)HTTP 304 (無需包體,節(jié)省瀏覽),告知瀏覽器繼續(xù)使用所保存的cache。

在實(shí)際中開發(fā)應(yīng)用中,我們會(huì)用到緩存,其實(shí)在django開發(fā)中我們也能用到緩存,現(xiàn)在django給我們很多緩存方式,我看到的有六種之多吧,可能其余的還有,不在追敘,我采用的是利用文件的緩存,說白了就是把緩存的數(shù)據(jù)放到請(qǐng)求的電腦中,這樣也是減少一部分的服務(wù)器的壓力,那么來看看我的配置。

CACHES = {
 'default': {
  'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
  'LOCATION': '/var/tmp/django_cache',

 }
}

這是我們利用緩存文件的緩存,那么我們配置好了,來看下我們的使用,首先我們可以全局緩存

使用中間件,經(jīng)過一系列的認(rèn)證等操作,如果內(nèi)容在緩存中存在,則使用FetchFromCacheMiddleware獲取內(nèi)容并返回給用戶,當(dāng)返回給用戶之前,判斷緩存中是否已經(jīng)存在,如果不存在則UpdateCacheMiddleware會(huì)將緩存保存至緩存,從而實(shí)現(xiàn)全站緩存

設(shè)置如下:

MIDDLEWARE = [
  'django.middleware.cache.UpdateCacheMiddleware',#放到第一個(gè)中間件位置
  # 其他中間件...
  'django.middleware.cache.FetchFromCacheMiddleware',#放到最后一個(gè)
 ]
 
 CACHE_MIDDLEWARE_ALIAS = ""
 CACHE_MIDDLEWARE_SECONDS = ""
 CACHE_MIDDLEWARE_KEY_PREFIX = ""

還有就是我們對(duì)單獨(dú)的視圖進(jìn)行緩存:

方法一:直接應(yīng)用加入裝飾器

from django.views.decorators.cache import cache_page@cache_page(60*15)
def ceshi(request):
 posts=Article.objects.filter(tag__name=u'測(cè)試')
 post_list = fenye(request, posts=posts)
 return render(request, 'index.html', {'post_list': post_list,})

其實(shí)我還用到另外的方式,那就是在url處增加,因?yàn)槲业氖敲嫦驅(qū)ο蟮木幊谭绞剿晕依孟旅娴摹?/p>

url(r'^$', cache_page(60*2)(HomeView.as_view()), name='home'),

這樣我們配置好,啟動(dòng)我們的項(xiàng)目,然后我們可以去看看我們的緩存是否生效,首先我們看下

可以看到,我在登陸界面做了兩分鐘的緩存,那么我們來看看我們的文件是否生效呢。

這樣可以證明我們現(xiàn)在的緩存是成功的,其實(shí)我們還可以利用redis等來緩存。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Python實(shí)現(xiàn)的飛速中文網(wǎng)小說下載腳本

    Python實(shí)現(xiàn)的飛速中文網(wǎng)小說下載腳本

    這篇文章主要介紹了Python實(shí)現(xiàn)的飛速中文網(wǎng)小說下載腳本,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • python?教程之blinker?信號(hào)庫

    python?教程之blinker?信號(hào)庫

    這篇文章主要介紹了python?教程之blinker?信號(hào)庫,文章基于python的相關(guān)資料展開詳細(xì)的內(nèi)容說明。具有一定的參考價(jià)價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • 利用Python實(shí)現(xiàn)某OA系統(tǒng)的自動(dòng)定位功能

    利用Python實(shí)現(xiàn)某OA系統(tǒng)的自動(dòng)定位功能

    這篇文章主要介紹了利用Python實(shí)現(xiàn)某OA系統(tǒng)的自動(dòng)定位功能,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python讀取文本繪制動(dòng)態(tài)速度曲線

    python讀取文本繪制動(dòng)態(tài)速度曲線

    這篇文章主要為大家詳細(xì)介紹了python讀取文本繪制動(dòng)態(tài)速度曲線,多圖同步顯示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python中json.load()與json.loads()方法有什么區(qū)別詳解

    Python中json.load()與json.loads()方法有什么區(qū)別詳解

    在讀取文件時(shí)解碼python的json格式,常用到j(luò)son.loads()與json.load(),下面這篇文章主要給大家介紹了關(guān)于Python中json.load()與json.loads()方法有什么區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • python執(zhí)行使用shell命令方法分享

    python執(zhí)行使用shell命令方法分享

    這篇文章主要介紹了python執(zhí)行使用shell命令方法分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Python實(shí)現(xiàn)初始化不同的變量類型為空值

    Python實(shí)現(xiàn)初始化不同的變量類型為空值

    這篇文章主要介紹了Python實(shí)現(xiàn)初始化不同的變量類型為空值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 詳解Python with/as使用說明

    詳解Python with/as使用說明

    這篇文章主要介紹了Python with/as使用說明,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • Python入門教程(二十七)Python的日期

    Python入門教程(二十七)Python的日期

    Python 中的日期不是其自身的數(shù)據(jù)類型,導(dǎo)入名為 datetime 的模塊,把日期視作日期對(duì)象進(jìn)行處理,有許多方法可以返回有關(guān)日期對(duì)象的信息,需要的朋友可以參考下
    2023-04-04
  • python3 爬取圖片的實(shí)例代碼

    python3 爬取圖片的實(shí)例代碼

    這篇文章主要介紹了python3 爬取圖片的實(shí)例代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11

最新評(píng)論

荣成市| 宝鸡市| 大同市| 林口县| 万安县| 霞浦县| 屯昌县| 盐城市| 肇庆市| 长宁区| 榆林市| 仁布县| 清流县| 山丹县| 政和县| 盐源县| 迁安市| 顺昌县| 儋州市| 京山县| 嘉峪关市| 荣昌县| 施甸县| 陆河县| 达州市| 怀远县| 永春县| 遵化市| 梓潼县| 普安县| 青阳县| 章丘市| 策勒县| 惠安县| 交口县| 双流县| 浮山县| 巴东县| 五峰| 元谋县| 盐城市|