django的缓存系统

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

1、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模块)
2、setting文件中设置:

①、利用文件进行缓存:

CACHES = {
    'default': {
     # 设置缓存的形式
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
     # 文件的保存路径
'LOCATION': '/var/django_cache', 'TIMEOUT': 600, 'OPTIONS': { 'MAX_ENTRIES': 1000 } } }

②、利用数据库进行缓存:

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

3、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中检查是否有当前网页的缓存内容,如果网页在缓存中,则直接从缓存中取出,返回给客户端,否则的话,缓存中自动存储当前访问的页面,以便下次使用;

 4、设置缓存应用的位置:

①、缓存机制加到中间件里实现全站缓存:

MIDDLEWARE_CLASSES = [  
    'django.middleware.cache.UpdateCacheMiddleware', #增加 必须放最上  
  
  
    'django.middleware.cache.FetchFromCacheMiddleware', #增加 必须放最后  
]  
  
CACHE_MIDDLEWARE_ALIAS = 'default'  
CACHE_MIDDLEWARE_SECONDS = 10  # 失效的时间 秒  
CACHE_MIDDLEWARE_KEY_PREFIX = 'ValexCache'  # 区分网站  

②、单独视图中实现缓存机制:

方式1、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)

方式2、路由中配置使用缓存机制:

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'),
]

③、局部使用缓存机制:

a. 引入TemplateTag
    {% load cache %}

b. 使用缓存
    {% cache 5000 缓存key %}  # 5000秒
        缓存内容
    {% endcache %}

 

转载于:https://www.cnblogs.com/liyu2151/p/7136919.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值