前言
1.快取的簡介
在動態**中,使用者所有的請求,伺服器都會去資料庫中進行相應的增,刪,查,改,渲染模板,執行業務邏輯,最後生成使用者看到的頁面.
當一個**的使用者訪問量很大的時候,每一次的的後臺操作,都會消耗很多的服務端資源,所以必須使用快取來減輕後端伺服器的壓力.
快取是將一些常用的資料儲存記憶體或者memcache中,在一定的時間內有人來訪問這些資料時,則不再去執行資料庫及渲染等操作,而是直接從記憶體或memcache的快取中去取得資料,然後返回給使用者.
2.django提供了6種快取方式
經常使用的有檔案快取和mencache快取
2.1 各種快取方式的配置檔案說明
2.1程式設計客棧.1 開發除錯(此模式為開發除錯使用,實際上不執行任何操作)
settings.py檔案配置
caches = ,
}}2.1.2 記憶體快取(將快取內容儲存至記憶體區域中)
settings.py檔案配置
caches =
}}2.1.3 檔案快取(把快取資料儲存在檔案中)
settings.py檔案配置
caches =
}
}2.1.4 資料庫快取(把快取資料儲存在資料庫中)
settings.py檔案配置
caches =
}
}注意,建立快取的資料庫表使用的語句:
python manage.py createcachetable
memcached是django原生支援的快取系統.要使用memcached,需要**memcached的支援庫python-memcached或pylibmc.
2.1.5 memcache快取(使用python-memcached模組連線memcache)
settings.py檔案配置
caches =
}}location也可以配置成如下:
'location': 'unix:/tmp/memcached.sock', # 指定區域網內的主機名加socket套接字為memcache快取伺服器
'location': [ # 指定一臺或多臺其他主機ip地址加埠為memcache快取伺服器
'192.168.10.100:11211',
'192.168.10.101:11211',
'192.168.10.102:11211',
]2.1.6 memcache快取(使用pylibmc模組連線memcache)
settings.py檔案配置
caches = ,
} }location也可以配置成如下:
'location': '/tmp/memcached.sock', # 指定某個路徑為快取目錄
'location': [ # 分散式快取,在多臺伺服器上執行memcached程序,程式會把多臺伺服器當作一個單獨的快取,而不會在每臺伺服器上覆制快取值
'192.168.10.100:11211',
'192.168.10.101:11211',
'192.168.10.102:11211',
]memcached是基於記憶體的快取,資料儲存在記憶體中.所以如果伺服器宕機的話,資料就會丟失,所以memcached一般與其他快取配合使用
3.django中的快取應用
django提供了不同粒度的快取,可以快取某個頁面,可以只快取一個頁面的某個部分,甚至可以快取整個**.
3.1 單獨檢視快取
例子,為單個檢視函式新增快取
路由配置:
url(r'^index$',views.index),
資料庫views**:
from app01 import models
from django.views.decorators.cache import cache_page
import time
@cache_page(15) #超時時間為15秒
def index(request):
user_list=models.userinfo.objects.all() #從資料庫中取出所有的使用者物件
ctime=time.time() #獲取當前時間
return render(request,"index.html",)
index.html**:
body>
django實現消除快取
import json from django.shortcuts import render from django.http import jsonresponse from rest framework.decorators import api view from rest framewor...
web內容快取
1.把內容快取到磁碟上 1 某些框架模板的頁面快取功能,例如smarty,zend framework 快取等等 這些的缺點是你必須用到這些框架或是模板,這也會帶來一些效能的開銷。其實也可以自己寫個簡單的快取方法。2 直接將變化不是很頻繁的內容靜態化,定期更新,靜態檔案的請求速度和消耗資源都遠小於動...
動態內容快取
原文 什麼是動態內容快取?瀏覽器向伺服器傳送請求後,伺服器會根據瀏覽器的要求做相應的處理 如 資料庫操作 然後將處理後的結果注入jsp頁面生成html,最後將生成的html返回給瀏覽器顯示。我們知道,資料庫讀取操作是非常耗時的,如果能將每次請求中的資料庫處理時間去掉,那伺服器的相應速度將會大幅提升。...
PHP內容快取Yac
yac 是為php實現的一個基於共享記憶體,無鎖的內容cache wget unzip master.zip cd yac master phpize configure prefix usr local yac with php config usr local php bin php confi...
Django顯示部落格文章內容
一 編輯mysite blog views.py from django.shortcuts import render,get object or 404 from models import blogarticles 基於函式的檢視,這個函式叫檢視函式 函式的引數是request,這個引數負責響...
Django 實現模板分頁顯示內容
分頁 1 作用 資料載入優化 2 前端引入bootstrap樣式 引入分頁器 3 paginator 屬性 方法 常見錯誤 4 page pagenum 路由引數 使用者想要檢視第幾頁 def showblogs request,pagenum 查詢資料庫獲取所有博文 blogs blog.obje...
如何實現LRU快取方案
lru是least recently used 的縮寫,他的意思是 最近最少使用 lru快取就是用這種原理實現,簡單的說就是快取一定量的資料,當超過設定的閾值是就把一些過期的資料刪除掉。常用於頁面置換演算法,是虛擬頁式儲存管理中常用的演算法。from collections import deque...