由於Django是動態網站,所有每次請求均會去數據進行相應的操作,當程序訪問量大時,耗時必然會更加明顯,最簡單解決方式是使用:緩存,緩存將一個某個views的返回值保存至內存或者Redis中,5分鍾內再有人來訪問時,則不再去執行view中的操作,而是直接從內存或者Redis中之前緩存的內容拿到,並返回。
1、准備一個動態網站
urls.py
|
1
2
3
4
5
|
from
app01
import
views
urlpatterns
=
[
url(r
'^admin/'
, admin.site.urls),
url(r
'^cache/$'
, views.cache),
]
|
app01/views.py
|
1
2
3
4
|
import
time
def
cache(request):
current
= str(
time.time())
return
HttpResponse(current)
|
2、創建緩存目錄

3、配置文件
settings.py
|
1
2
3
4
5
6
7
8
9
10
|
CACHES
=
{
'default'
: {
'BACKEND'
:
'django.core.cache.backends.filebased.FileBasedCache'
,
#文件方式
'LOCATION'
: os.path.join(BASE_DIR,
'cache'
),
'TIMEOUT'
:
600
,
'OPTIONS'
: {
'MAX_ENTRIES'
:
1000
}
}
}
|
4、應用
|
1
2
3
4
5
6
|
from
django.views.decorators.cache
import
cache_page
@cache_page
(
60
*
15
)
#緩存15分鍾
def
cache(request):
current
=
str
(time.time())
return
HttpResponse(current)
|
5、驗證
時間戳只刷新了一次就被緩存了起來,再刷新就不改變了,讀取的是cache的字符串。同時,生成了2個靜態緩存文件:

6、緩存介質
所生成的靜態字符串,可以存放在文件,內存,數據庫,或redis、memcache。
英文鏈接:https://docs.djangoproject.com/en/1.9/topics/cache/
中文連接:http://djangobook.py3k.cn/2.0/chapter15/
