Django中的缓存机制

概述

对于中等流量网站来说,尽可能的减少开销是必要的。缓存数据就是为了保存那些需要很多计算资源大的结果,这样的的话就不必在下次重复消耗计算资源。

Django自带了一个健壮的缓存系统来保存动态页面,避免每次请求都重新计算。

Django提供了不同级别的缓存策略,可以缓存特定的视图输出、可以仅仅缓存那些很难计算出来的部分、或者缓存整个网站。

将缓存存储到redis中,默认使用redis中的数据库,首先需要安装扩展库,pip install django-redis-cache。

然后在setting.py里配置,

1         CACHES={
2     ‘default‘:{
3         ‘BACKEND‘:‘redis_cache.cache.RedisCache‘,
4         ‘LOCATION‘:‘localhost:6379‘,#redis数据库,
5         ‘TIMEOUT‘:60  #过期时间
6     }  }

然后再,单个view缓存

第一种方法在视图views里面设置,

1 django.views.decorators.cache.cache_page装饰器用于对视图的输出进行缓存
2 from django.views.decorators.cache import cache_page
3
4 @cache_page(60 * 2)
5 def index(request):
6     # return HttpResponse("sunck is a good man")
7     return HttpResponse("sunck is a nice man")

cache_page(timeout, [cache=cache name], [key_prefix=key prefix])

cache_page只接受一个参数和两个关键字参数,

  • timeout是缓存时间,以秒为单位
  • cache:指定使用你的CACHES设置中的哪一个缓存后端
  • key_prefix:指定缓存前缀,可以覆盖在配置文件中CACHE_MIDDLEWARE_KEY_PREFIX的值

第二种,在路由URL里面设置;

1 from django.views.decorators.cache import cache_page
2  urlpatterns = (‘‘,
3     (r‘^foo/(\d{1,2})/$‘, cache_page(60 * 15)(my_view)),

模板片段的缓存设置

 1 {% load static %}
 2 {% load cache %}
 3 <!DOCTYPE html>
 4 <html lang="en">
 5 <head>
 6     <meta charset="UTF-8">
 7     <title>主页</title>
 8
 9 {#    <link rel="stylesheet" type="text/css" href="/static/css/index.css">#}
10     <link rel="stylesheet" type="text/css" href="{% static ‘css/index.css‘ %}">
11 </head>
12 <body>
13     <h1>sunck is a nice man</h1>
14     {% cache 120 sunck %}#参数,120是缓存时间,以秒为单位,sunk是缓存片段的名字。
15         <h1>nice man</h1>
16         <!--<h1>good man</h1>-->
17     {% endcache %}
18 </body>
19 </html>

原文地址:https://www.cnblogs.com/adaicary/p/11721947.html

时间: 2024-11-06 18:28:31

Django中的缓存机制的相关文章

linux套接字通信之recv中的缓存机制的研究

以前一直有这么一个小小的疑惑,当一个进程注册一个套接字后,如果这个套接字没有被调用recv函数接受数据包,那么这个套接字能接受到数据包吗? 或者这样说,如果我的程序注册了一个套接字去接受数据包,但是每收到一个数据包都需要很长一段时间处理,并且在处理数据包的途中recv函数使没有被调用的,那么如果程序再处理数据包的途中有数据包到来,那我的程序会不会漏过这些数据包(那个包到达的时候程序在处理别的包,而没有调用recv函数)? 答案是不会的.事实上linux中会为每个套接字建立缓存,当属于套接字的包到

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_CLA

hibernate中的缓存机制

一.为什么要用Hibernate缓存? Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能. 缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据. 二.Hibernate缓存原理是怎样的?Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存. 1.Hibernate一级缓存又称为“Session的缓存”. Sessio

Java包装类中的缓存机制

本文将介绍Java中Integer的缓存相关知识.这是在Java 5中引入的一个有助于节省内存,提高性能的功能.首先看一个使用Integer的示例代码,从中学习其缓存行为.接着我们将为为什么这么实现以及他到底是如何实现的.你能猜出下面的的Java程序的输出结果吗.如果你的结果和真正结果不一样,那么你就要好好看看本文了. package com.javapapers.java; public class JavaIntegerCache { public static void main(Stri

029.ASP.Net中的缓存机制

ASP.Net中的缓存 输出缓存1. 整页缓存 缓存整个页面的输出结果 Duration 缓存时间:绝对过期 VaryByParam:依据参数值缓存,没有为None,多个用;分割 Location:缓存的位置 代码在 ftp 的 Cache目录内 2. 片段缓存 使用用户控件,将需要缓存的内容放入用户控件 指定shared=true,可以多个页面共享缓存结果 3.Substitution控件 在整页都缓存的情况下,可以部分更新内容 配置MethodName属性,对应的.cs中的方法原型是 str

[Django高级]理解django中的中间件机制和执行顺序

原文来自 Understanding Django Middlewares, 这篇文章从整体上介绍了django中中间件定义,作用,和怎么样自己写中间件 –orangleliu. 注:middleware 和中间件在下面文章中含义相同,不完全翻译了 假设你已经阅读了 Django官方文档middleware部分. 下面会尽可能详尽的介绍文档中提到的知识,但是还是希望你熟悉 middleware 基本的概念. 这篇文章中我们将讨论下面内容: 什么是 middleware 什么时候使用 middle

分享知识-快乐自己:论Hibernate中的缓存机制

Hibernate缓存 缓存: 是计算机领域的概念,它介于应用程序和永久性数据存储源之间. 缓存: 一般人的理解是在内存中的一块空间,可以将二级缓存配置到硬盘.用白话来说,就是一个存储数据的容器.我们关注的是,哪些数据需要被放入二级缓存. 缓存作用: 降低应用程序直接读写数据库的频率,从而提高程序的运行性能.缓存中的数据是数据存储源中数据的拷贝.缓存的物理介质通常是[内存]. Hibernate缓存分类: 1):Session缓存(又称作事务缓存):Hibernate内置的,不能卸除. 缓存范围

一次读懂mybatis中的缓存机制

缓存功能针对于查询(没听说果UPDATE,INSERT语句要缓存什么,都是直接执行的) 默认情况下,mybatis会启用一级缓存. 如果使用同一个session对象调用了相同的SELECT语句,则直接会从缓存中返回结果,而不是再查询一次数据库. 注意:session调用commit或close方法后,这个session中的一级缓存就会被清空 例如: 根据日志输出可以看出,下面代码只会发出一条sql查询语句 SqlSession sqlSession = MyBatisSqlSessionFact

Android中的缓存机制与实现

分步阅读 Android开发本质上就是手机和互联网中的web服务器之间进行通信,就必然需要从服务端获取数据,而反复通过网络获取数据是比较耗时的,特别是访问比较多的时候,会极大影响了性能,Android中可通过二级缓存来减少频繁的网络操作,减少流量.提升性能. 方法/步骤 二级缓存工作机制 所谓二级缓存实际上并不复杂,当Android端需要获得数据时比如获取网络中的图片,我们首先从内存中查找(按键查找),内存中没有的再从磁盘文件或sqlite中去查找,若磁盘中也没有才通过网络获取:当获得来自网络的