首先我們先來了解下瀏覽器的快取
瀏覽器快取機制
cache-control策略
cache-control與expires的作用一致,都是指明當前資源的有效期,控制瀏覽器是否直接從瀏覽器緩訪問資料還是重新發請求到伺服器取資料。只不過cache-control的選擇更多,設定更細緻,如果同時設定的話,其優先順序高於expires。
還是上面那個請求,web伺服器返回的cache-control頭的值為max-age=300,即5分鐘(和上面的expires時間一致,這個不是必須的)。
last-modified/if-modified-since要配合cache-control使用。
l last-modified:標示這個響應資源的最後修改時間。web伺服器在響應請求時,告訴瀏覽器資源的最後修改時間。
l if-modified-since:當資源過期時(使用cache-control標識的max-age),發現資源具有last-modified宣告,則再次向web伺服器請求時帶上頭 if-modified-since,表示請求時間。web伺服器收到請求後發現有頭if-modified-since 則與被請求資源的最後修改時間進行比對。若最後修改時間較新,說明資源又被改動過,則響應整片資源內容(寫在響應訊息包體內),http 200;若最後修改時間較舊,說明資源無新修改,則響應http 304 (無需包體,節省瀏覽),告知瀏覽器繼續使用所儲存的cache。
在實際中開發應用中,我們會用到快取,其實在django開發中我們也能用到快取,現在django給我們很多快取方式,我看到的有六種之多吧,可能其餘的還有,不在追敘,我採用的是利用檔案的快取,說白了就是把快取的資料放到請求的電腦中,這樣也是減少一部分的伺服器的壓力,那麼來看看我的配置。
caches =這是我們利用快取檔案的快取,那麼我們配置好了,來看下我們的使用,首先我們可以全域性快取}
使用中介軟體,經過一系列的認證等操作,如果內容在快取中存在,則使用fetchfromcachemiddleware獲取內容並返回給使用者,設定如下:當返回給使用者之前,判斷快取中是否已經存在,如果不存在則updatecachemiddleware會將快取儲存至快取,從而實現全站快取
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其實我還用到另外的方式,那就是在url處增加,因為我的是物件導向的程式設計方式所以我利用下面的。@cache_page(60*15)
defceshi(request):
posts=article.objects.filter(tag__name=u'測試'
) post_list = fenye(request, posts=posts)
return render(request, '
index.html
', )
url(r'這樣我們配置好,啟動我們的專案,然後我們可以去看看我們的快取是否生效,首先我們看下^$', cache_page(60*2)(homeview.as_view()), name='
home
'),
可以看到,我在登陸介面做了兩分鐘的快取,那麼我們來看看我們的檔案是否生效呢。
這樣可以證明我們現在的快取是成功的,其實我們還可以利用redis等來快取。
django 重新整理快取 Django 中的快取問題
django 中的快取問題 簡單介紹 在動態 中,使用者所有的請求,伺服器都會去資料庫中進行相應的增,刪,查,改,渲染模板,執行業務邏輯,最後生成使用者看到的頁面.當乙個 的使用者訪問量很大的時候,每一次的的後台操作,都會消耗很多的服務端資源,所以必須使用快取來減輕後端伺服器的壓力.快取是將一些常用...
Django 快取優化之檔案快取
快取優化是指在django中開啟快取設定,這樣在 流量非常大的時候就不需要頻繁訪問資料庫,提高系統效能。使用檔案做快取的具體操作 1.開啟快取 2.開啟快取的中介軟體 儲存快取的功能 django.middleware.cache.updatecachemiddleware 判斷是否有快取 3.啟動...
合理利用快取檔案
不要把所有都變成想當然,當你要給成幾萬幾十萬幾百萬使用者展示乙個資訊的時候。你會去資料庫中資訊的表給所有使用者都插入一條資訊麼?我想打多數人不會那麼幹吧,但有時候就想當然了,一條是這麼幹 20條肯定也是這麼幹的。這樣就陷入了乙個誤區。轉變一下思維,給乙個人肯定是就只給20個使用者中的乙個人只讓他自己...