django是动态网站,通常来讲客户端向服务端发起请求,须要实时的去views执行函数,并从数据库取出数据,再由template模板进行渲染,最后返回给客户端,一旦访问量增大,服务端的压力也会变得很高;在django中对于用户的访问,采起设置缓存的形式,当用户必定时间内下一次访问相同的网站,则会返回缓存中的内容,请求就不用通过views、models和template的处理;python
'django.core.cache.backends.db.DatabaseCache' # 数据库的形式进行缓存 'django.core.cache.backends.dummy.DummyCache' # 开发调试 'django.core.cache.backends.filebased.FileBasedCache' # 文件进行缓存 'django.core.cache.backends.locmem.LocMemCache' # 内存中进行缓存 'django.core.cache.backends.memcached.MemcachedCache' # Memcache缓存(python-memcached模块) 'django.core.cache.backends.memcached.PyLibMCCache' # Memcache缓存(pylibmc模块)
①、利用文件进行缓存:数据库
CACHES = { 'default': {
# 设置缓存的形式 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
# 文件的保存路径 'LOCATION': '/var/django_cache', 'TIMEOUT': 600, 'OPTIONS': { 'MAX_ENTRIES': 1000 } } }
②、利用数据库进行缓存:django
CACHES = { 'default': { # 缓存形式设置为数据库 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', # 数据库的名字 'LOCATION': 'cache_table_name', 'TIMEOUT': 600, 'OPTIONS': { 'MAX_ENTRIES': 2000 } } }
利用数据库的形式进行缓存,须要先建立数据库,执行一条命令:缓存
python manage.py createcachetable cache_table_name
# 导入缓存模块
from django.views.decorators.cache import cache_page # 验证缓存 @cache_page(60 * 0.5) # 设置缓存时间 def caches(request): current_time = time.time()
# 读取数据并渲染到网页中 return HttpResponse(current_time)
django缓存机制大概的理解:访问一个网址时,尝试去cache中检查是否有当前网页的缓存内容,若是网页在缓存中,则直接从缓存中取出,返回给客户端,不然的话,缓存中自动存储当前访问的页面,以便下次使用;app
①、缓存机制加到中间件里实现全站缓存:memcached
MIDDLEWARE_CLASSES = [ 'django.middleware.cache.UpdateCacheMiddleware', #增长 必须放最上 'django.middleware.cache.FetchFromCacheMiddleware', #增长 必须放最后 ] CACHE_MIDDLEWARE_ALIAS = 'default' CACHE_MIDDLEWARE_SECONDS = 10 # 失效的时间 秒 CACHE_MIDDLEWARE_KEY_PREFIX = 'ValexCache' # 区分网站
②、单独视图中实现缓存机制:函数
方式一、views.py 增长装饰器:网站
# 导入缓存模块 from django.views.decorators.cache import cache_page # 验证缓存 @cache_page(60 * 0.5) # 设置缓存时间 def caches(request): current_time = time.time() # 读取数据并渲染到网页中 return HttpResponse(current_time)
方式二、路由中配置使用缓存机制:url
from form_app import views from django.views.decorators.cache import cache_page urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/', views.login, name='login'), # 路由中配置,cache_page(5)(views.caches), 数字为秒 url(r'^cache/', cache_page(5)(views.caches), name='cache'), ]
③、局部使用缓存机制:spa
a. 引入TemplateTag {% load cache %} b. 使用缓存 {% cache 5000 缓存key %} # 5000秒 缓存内容 {% endcache %}