Django中的缓存(内存,文件,redis)

一、Django中的缓存的几种方法

1)单个视图缓存。时间测试

import time
from django.views.decorators.cache import cache_page
@cache_page(5)     # 缓存5秒
def test_time(request):
    ctime=time.time()
    return HttpResponse(ctime)

在5秒内访问的时间不变,该缓存到了内存里面

2)设置全局缓存

需要在settings添加中间件

MIDDLEWARE_CLASSES = (
    ‘django.middleware.cache.UpdateCacheMiddleware’,    #第一 ,重写了response的方法
    ‘django.middleware.common.CommonMiddleware‘,
    ‘django.middleware.cache.FetchFromCacheMiddleware‘,  #最后,重写了request的方法
)
“update” 必须配置在第一个
“fetch” 必须配置在最后一个

配置缓存时间:CACHE_MIDDLEWARE_SECONDS=10

settings的示例

MIDDLEWARE_CLASSES = (
    ‘django.middleware.cache.UpdateCacheMiddleware‘,   #响应HttpResponse中设置几个headers
    ‘django.contrib.sessions.middleware.SessionMiddleware‘,
    ‘django.middleware.common.CommonMiddleware‘,
    ‘django.middleware.csrf.CsrfViewMiddleware‘,
    ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
    ‘django.contrib.auth.middleware.SessionAuthenticationMiddleware‘,
    ‘django.contrib.messages.middleware.MessageMiddleware‘,
    ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
    ‘django.middleware.security.SecurityMiddleware‘,
    ‘django.middleware.cache.FetchFromCacheMiddleware‘,   #用来缓存通过GET和HEAD方法获取的状态码为200的响应

)

CACHE_MIDDLEWARE_SECONDS=10

setting.py

视图函数编写(缓存所有视图有效)

import time
def test_time(request):
    ctime=time.time()
    return HttpResponse(ctime)

3)模板层中的缓存。只缓存需要的内容。(关闭全局缓存)

html的编写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="/static/jquery-3.3.1.js"></script>
    <title>Title</title>
</head>
<body>
{% load cache %}

当前时间:{{ ctime }}
<hr>

{% cache 5 ‘time‘%}
应用缓存:{{ ctime }}
{% endcache %}

</body>

</html>

test.html

视图编写

import time
def test_time(request):
    ctime=time.time()
    return render(request,‘test.html‘,locals())

4)文件中的缓存。settings配置

CACHES = {
 ‘default‘: {
  ‘BACKEND‘: ‘django.core.cache.backends.filebased.FileBasedCache‘, #指定缓存使用的引擎
  ‘LOCATION‘: ‘/var/tmp/django_cache‘,        #指定缓存的路径
  ‘TIMEOUT‘:300,              #缓存超时时间(默认为300秒,None表示永不过期)
  ‘OPTIONS‘:{
   ‘MAX_ENTRIES‘: 300,            # 最大缓存记录的数量(默认300)
   ‘CULL_FREQUENCY‘: 3,           # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
  }
 }
}

CACBES

视图编写

import time
from django.views.decorators.cache import cache_page
@cache_page(5)
def test_time(request):
    ctime=time.time()
    return HttpResponse(ctime)

访问会在配置的路径下生成缓存文件

5)缓存到redis中。

5.1)安装 pip3 install django-redis

5.2)setting.py里面进行配置

# redis配置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}    # 连接池
            # "PASSWORD": "123",
        }
    }
}

原文地址:https://www.cnblogs.com/linu/p/10122870.html

时间: 2024-11-07 20:57:40

Django中的缓存(内存,文件,redis)的相关文章

Django中的缓存机制

概述 对于中等流量网站来说,尽可能的减少开销是必要的.缓存数据就是为了保存那些需要很多计算资源大的结果,这样的的话就不必在下次重复消耗计算资源. Django自带了一个健壮的缓存系统来保存动态页面,避免每次请求都重新计算. Django提供了不同级别的缓存策略,可以缓存特定的视图输出.可以仅仅缓存那些很难计算出来的部分.或者缓存整个网站. 将缓存存储到redis中,默认使用redis中的数据库,首先需要安装扩展库,pip install django-redis-cache. 然后在settin

Django中使用静态资源/文件

Django中常需要引用js,css,小图像文件,一般我们把这一类文件称为静态文件,放置在static文件夹中,接下来,对Django中配置静态文件进行下傻瓜式的步骤介绍 在工程目录下新建static文件夹 修改settings.py,添加 STATIC_URL = '/static/' STATIC_ROOT = os.path.abspath(os.path.join(BASE_DIR, '..', 'static')) STATICFILES_DIRS = ( os.path.join(B

django中url,静态文件,POST请求的配置

平时使用的是pycharm,所以这篇文章主要也是使用pycharm默认创建的django项目为基础进行讲解.项目目录如下图: 1.URL的配置 当创建好项目后,运行项目就可以看到django默认的页面.那么怎么访问自己创建的页面呢? 因为django是类MVC的开发模式.这里面就涉及到配置URL的问题.创建一个自己的APP(也可以称为一个模块),包含的文件内容如下图: 然后需要在setting.py的文件INSTALLED_APPS中注册新创建的App: 新创建项目的默认url配置如下: fro

Django中关于导入静态文件的方法

1.首先需要设置static文件的位置,在setting文件中设置 2.在html中通过{% load staticfiles %}加载,并调用,如下 原文地址:https://www.cnblogs.com/wangyi891224/p/9047479.html

Django中redis的使用方法(包括安装、配置、启动)

一.安装redis: 1.下载: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 2.解压 tar -zxvf redis-3.2.8.tar.gz 3.复制,放到/usr/local目录下 sudo mv ./redis-3.2.8 /usr/local/redis 4.进入到redis目录下 cd /usr/local/redis/ 5.生成 sudo make 6.测试,时间会比较长 sudo make test 7.安装

django框架中的缓存系统

一.浏览器的缓存机制 Cache-Control策略: Cache-Control和Expires的作用相似,即指出当前资源的有效期,控制浏览器是直接从浏览器缓存获取数据还是发送Request到服务端获取数据,只不过Cache-Control的选择方式更多,设置详细,如果要同时设置,优先级高于Expires. Cache-Control: max-age=10,即设置缓存存储的最大周期为10s,这和Date与Expires的差值相对应,private表明响应只能被单个用户缓存,不能作为共享缓存(

Django 中bootstrap的引用

bootstrap的优越性 如果你有基本的HTML+CSS,bootstrap其实就是在标签中加入具体的class来实现样式.和原生态的HTML+CSS需要先在head标签的style写样式或者引入外部样式相比,bootstrap相当于已经写好了,直接用对应的class引用就可以了. bootstrap的使用 我是在用Django开发的过程中用bootstrap. 1. bootstrap的引用 我使用的bootstrap3,在Django中,引入静态文件非常的简单: Django的设置在set

详解django中的collectstatic命令以及STATIC_URL、STATIC_ROOT配置

转:https://blog.csdn.net/weixin_36296538/article/details/83153070 前言我最近在琢磨django框架的使用,在上传个人网站服务器上时,再次遇到了找不到静态文件,css.img等样式全无的问题.于是沉下心来,好好研究了django的静态文件到底应该怎么去部署(deploy),一点心得体会现分享于下.1. python manage.py collectstatic做了什么Collects the static files into ST

android中图片的三级缓存cache策略(内存/文件/网络)

实现图片缓存也不难,需要有相应的cache策略.这里我采用 内存-文件-网络 三层cache机制,其中内存缓存包括强引用缓存和软引用缓存(SoftReference),其实网络不算cache,这里姑且也把它划到缓存的层次结构中 1.简介 现在android应用中不可避免的要使用图片,有些图片是可以变化的,需要每次启动时从网络拉取,这种场景在有广告位的应用以及纯图片应用(比如百度美拍)中比较多. 现在有一个问题:假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量.在当前的状况下,对于非wi