django的缓存系统

  django是动态网站,通常来讲客户端向服务端发起请求,须要实时的去views执行函数,并从数据库取出数据,再由template模板进行渲染,最后返回给客户端,一旦访问量增大,服务端的压力也会变得很高;在django中对于用户的访问,采起设置缓存的形式,当用户必定时间内下一次访问相同的网站,则会返回缓存中的内容,请求就不用通过views、models和template的处理;python

一、django中自带的一些缓存的形式:

'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模块)

二、setting文件中设置:

①、利用文件进行缓存:数据库

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

三、views中的设置:

# 导入缓存模块
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 %}
相关文章
相关标签/搜索