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

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

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

前言

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

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

瀏覽器緩存機制

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

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

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

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

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

 }
}

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

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

設置如下:

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

還有就是我們對單獨的視圖進行緩存:

方法一:直接應用加入裝飾器

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

其實我還用到另外的方式,那就是在url處增加,因為我的是面向對象的編程方式所以我利用下面的。

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

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

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

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Python Google風格注釋的使用

    Python Google風格注釋的使用

    Google風格注釋是一種Python代碼注釋的標準化格式,它提供了一種規(guī)范的注釋格式,使得代碼更加易讀、易于維護,本文就來介紹一下Google風格注釋的語法和用法,感興趣的可以了解一下
    2023-11-11
  • Python如何根據(jù)字典中的值排序

    Python如何根據(jù)字典中的值排序

    這篇文章主要介紹了Python如何根據(jù)字典中的值排序問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 利用python對Excel中的特定數(shù)據(jù)提取并寫入新表的方法

    利用python對Excel中的特定數(shù)據(jù)提取并寫入新表的方法

    今天小編就為大家分享一篇利用python對Excel中的特定數(shù)據(jù)提取并寫入新表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python類的繼承super相關原理解析

    Python類的繼承super相關原理解析

    這篇文章主要介紹了Python類的繼承super相關原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 基于Python爬蟲采集天氣網實時信息

    基于Python爬蟲采集天氣網實時信息

    這篇文章主要介紹了基于Python爬蟲采集天氣網實時信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 關于matplotlib及相關cmap參數(shù)的取值方式

    關于matplotlib及相關cmap參數(shù)的取值方式

    這篇文章主要介紹了關于matplotlib及相關cmap參數(shù)的取值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python數(shù)據(jù)庫sqlite3圖文實例詳解

    Python數(shù)據(jù)庫sqlite3圖文實例詳解

    SQLite是一個進程內的庫,實現(xiàn)了自給自足的、無服務器的、零配置的、事務性的SQL數(shù)據(jù)庫引擎,下面這篇文章主要給大家介紹了關于Python數(shù)據(jù)庫sqlite3的相關資料,需要的朋友可以參考下
    2022-09-09
  • Python3內置模塊pprint讓打印比print更美觀詳解

    Python3內置模塊pprint讓打印比print更美觀詳解

    這篇文章主要給大家介紹了關于Python3內置模塊pprint讓打印比print更美觀的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python3具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • pycharm配置pyqt5-tools開發(fā)環(huán)境的方法步驟

    pycharm配置pyqt5-tools開發(fā)環(huán)境的方法步驟

    這篇文章主要介紹了pycharm配置pyqt5-tools開發(fā)環(huán)境的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Python使用flask框架操作sqlite3的兩種方式

    Python使用flask框架操作sqlite3的兩種方式

    這篇文章主要介紹了Python使用flask框架操作sqlite3的兩種方式,結合實例形式分析了Python基于flask框架操作sqlite3數(shù)據(jù)庫的兩種常用操作技巧,需要的朋友可以參考下
    2018-01-01

最新評論