Python Web开发:Django缓存系统

来自CloudWiki
跳转至: 导航搜索

背景

首页的访问相比其他页面更为频繁,

而首页每次访问都要读取数据库,当访问量较大的时候,就会有很多次的数据库查询,容易造成访问速度变慢。可以用缓存来解决这个问题。

缓存系统工作原理

对于给定的网址,服务器首先尝试从缓存中找到网址,如果页面在缓存中,直接返回缓存的页面,如果缓存中没有,则执行相关操作(如查询数据库)存到缓存系统中供下一次使用。

  • 使用缓存的一种简单方法是利用服务器本地的内存来当缓存,速度响应较快,但是这样不利于管理,
  • 当数据量较大的时候,可以使用数据库作为缓存后台。

实训步骤

建立缓存表

在数据库中建立一个名为cache_table_home的缓存表:

python manage.py createcachetable cache_table_home

配置缓存

打开settings.py文件:

#配置缓存表
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'cache_table_home',
        'TIMEOUT': 600,
        'OPTIONS': {
            'MAX_ENTRIES': 2000
        }
    }
}
  • BACKEND: 设置当前缓存使用何种后台,这里是数据库
  • LOACATION: 设置具体的缓存表
  • TIMEOUT: 用于设置默认的超时时间
  • MAX_ENTRIES: 用于设置允许的最大并发量。

添加缓存装饰器

完成上述配置后只需在需要缓存的页面视图处理函数前添加缓存装饰器即可。

from django.views.decorators.cache import cache_page
# Create your views here.

@cache_page(60 * 15) #单位:秒数,这里指缓存15分钟
def home(request):

验证

完成上述修改后,读者可以对模板文件home.html内容进行修改,然后查看浏览器是否同步更新,

可以发现当前浏览器并没有将内容同步更改过来,而是需要等待15分钟之后内容才会更新。原因是刚才设置的缓存时间15分钟。