django之设置缓存

摘要:
缓存的一句话总结:缓存可以缓存视图、模板和数据。在不同位置设置缓存可以节省服务器的性能并减少用户等待时间。对于中等流量的网站,有必要尽可能降低成本。
缓存

一句话总结:缓存可以对view、模板、数据进行缓存可以设置缓存在不同的地方(本地内存、redis、系统文档)可以为服务器节省性能、减少用户等待时间。

  • 对于中等流量的网站来说,尽可能地减少开销是必要的。缓存数据就是为了保存那些需要很多计算资源的结果,这样的话就不必在下次重复消耗计算资源
  • Django自带了一个健壮的缓存系统来保存动态页面,避免对于每次请求都重新计算
  • Django提供了不同级别的缓存粒度:可以缓存特定视图的输出可以仅仅缓存那些很难生产出来的部分或者可以缓存整个网站

设置缓存

  • 通过设置决定把数据缓存在哪里,是数据库中文件系统还是在内存、或者是redis
  • 通过setting文件的CACHES配置来实现
  • 参数TIMEOUT:缓存的默认过期时间,以秒为单位,这个参数默认是300秒,即5分钟;设置TIMEOUT为None表示永远不会过期,值设置成0造成缓存立即失效
CACHES={
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', #缓存到本地内存中
        'TIMEOUT': 60,
    }
}
  • 可以将cache存到redis中默认采用1数据库,需要安装包并配置如下: 
安装包:pip install django-redis-cache

CACHES 
    "default": {
        "BACKEND": "redis_cache.cache.RedisCache",  #缓存到redis中
        "LOCATION": "localhost:6379",
        'TIMEOUT': 60,
    },
} 
  • 可以连接redis查看存的数据 
连接:redis-cli
切换数据库:select 1
查看键:keys *
查看值:get 键

单个view缓存

  • django.views.decorators.cache定义了cache_page装饰器,用于对视图的输出进行缓存
  • 示例代码如下:
from django.views.decorators.cache import cache_page

@cache_page(60 * 15)
def index(request):
    return HttpResponse('hello1')
    #return HttpResponse('hello2')
  • cache_page接受一个参数:timeout,秒为单位,上例中缓存了15分钟
  • 视图缓存与URL无关,如果多个URL指向同一视图,每个URL将会分别缓存
  • 模板片断缓存

  • 使用cache模板标签来缓存模板的一个片段
  • 需要两个参数:
    • 缓存时间,以秒为单位
    • 给缓存片段起的名称
  • 示例代码如下:
{% load cache %}
{% cache 500 hello %}
hello1
<!--hello2-->
{% endcache %}

底层的缓存API

from django.core.cache import cache

设置:cache.set(键,值,有效时间)
获取:cache.get(键)
删除:cache.delete(键)
清空:cache.clear() 

免责声明:文章转载自《django之设置缓存》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇将多张图片无缝拼接方法rsync(一):基本命令和用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python3 + Django + Mysql + Vue + Element-UI 学习笔记:从0搭建前后端分离的测试工具平台

2020.03.23  INIT 中间换了工作,好久没写了 2021.05.08  新增:页面预览、功能实现样例(含后端接口、前端页面、配置绑定) 2021.05.13  新增:首页增加访问人数统计功能 2021.05.19  新增:用户信息查询接口、页面开发 2021.06.10  新增:生成图片功能 2021.06.18  新增:文本处理工具下载页面...

Django的celery配置(包括定时任务、队列)

一、安装celery Django项目不需要安装celery这个包,可以直接使用django-celery这个包,,先来安装它,在终端中输入: pip install django-celery 二、安装rabbitmq,建立celery队列 我做的项目用的就是rabbitmq,按道理来说,也是可以用redis作为消息队列的,但是rabbitmq更好,此...

浏览器缓存知识小结及应用

浏览器缓存,也就是客户端缓存,既是网页性能优化里面静态资源相关优化的一大利器,也是无数web开发人员在工作过程不可避免的一大问题,所以在产品开发的时候我们总是想办法避免缓存产生,而在产品发布之时又在想策略管理缓存提升网页的访问速度。了解浏览器的缓存命中原理,是开发web应用的基础,本文着眼于此,学习浏览器缓存的相关知识,总结缓存避免和缓存管理的方法,结合具...

django 框架模型之models常用的Field,及常见错误原因及处理方案。

1. django 模型models 常用字段          1、models.AutoField          自增列 = int(11)        如果没有的话,默认会生成一个名称为 id 的列        如果要显式的自定义一个自增列,必须设置primary_key=True。   2、models.CharField    ...

python Django 用户管理和权限认证

Auth认证系统 from django.contrib.auth import login, logout, authenticate from django.contrib.auth.models import User # 用户登陆 user = authenticate(username, password) if user: if us...

9款Android经常使用的高速开发框架

1、Afinal框架 项目地址:https://github.com/yangfuhai/afinal 项目地址:http://www.oschina.net/p/afinal 主要有四大模块: (1) 数据库模块:android中的orm框架,使用了线程池对sqlite进行操作。 (2) 注解模块:android中的ioc框架,全然注解方式就能够进行...