django视图缓存的实现

1,安装

pip install django-redis

setting.py

CACHES = {
"default":{
"BACKEND":"django_redis.cache.RedisCache",
"LOCATION":"redis://127.0.0.1:6379/1",
"OPTIONS":{
"CLIENT_CLASS":"django_redis.client.DefaultClient"
}
}
}

2.视图函数中使用缓存

from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
class ArticleView(View):
@method_decorator(cache_page(60 * 15))
def get(self,request):
    return render(request, 'article/index.html', context=context)

注意:

给视图添加缓存是有风险的,如果视图所展示的网页中有经常动态变动的信息,那么被添加缓存命不可取。

缓存整个视图最实用的场景应该是这个视图所展示的网页的内容基本上不怎么变动,或者说在很长一段时间内不需要变动,这样使用缓存就非常有效。

3.URLconf中使用缓存

上面说了函数视图使用缓存,但是我们可能还有一种场景,那就是多个 URL 指向同一个函数视图,但是我只想缓存一部分的 URL,

这时候就可以采用在 URLconf 中使用缓存,这样就指定了哪些 URL 需要缓存。

下面分别表示了函数视图和类视图的路由中使用缓存的方式,基本一致:

from django.views.decorators.cache import cache _page

urlpatterns = [
url(r'^foo/([0-9]{1,2})/$',cache_page(60 * 15)(my_view)),
url(r'^$', cache_page(60 * 30)(IndexView.as_view()), name='index'),
]

4,模板中使用缓存(推荐)

模板中使用缓存是我比较推荐的一种缓存方式,因为使用这种方式可以充分的考虑缓存的颗粒度,细分颗粒度,可以保证只缓存那些适合使用缓存的 HTML 片段。

具体的使用方式如下,首先加载 cache 过滤器,然后使用模板标签语法把需要缓存的片段包围起来即可。

{% load cache %}
{% cache 500 ‘cache_name’ %}

<div>container</div>

{% endcache %}

下面这些时候可以用缓存:

  • 纯静态页面
  • 读取了数据库信息,但是不经常变动的页面,比如文章热门排行榜,这个调用数据库信息并且还要排序的完全可以使用缓存,因为不需要实时展现最新的
  • HTML 的片段,比如整个页面都经常变动,但是有个侧边栏不经常变动,就可以缓存侧边栏
  • 需要使用复杂逻辑生成的 HTML 片段,使用缓存可以减少多次重复操作

django视图缓存的实现的更多相关文章

  1. Django视图中使用本地缓存

    Django服务器视图使用缓存可以大大减小服务器的压力,对数据实时性要求不高的场景使用缓存非常适合. 使用Django本地缓存 1. 在settings.py配置CACHES CACHES = { ' ...

  2. Django的缓存机制

    由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...

  3. Django—视图

    索引 一.URLconf 二.视图 三.HttpReqeust对象 3.1 QueryDict对象 3.2 GET和POST属性 四.HttpResponse对象 4.1 子类JsonResponse ...

  4. Django 视图系统

    Django 视图系统 概念 一个视图函数,简称视图,是一个简单的Python函数,用于接受Web请求并返回Web响应. 通常将视图函数写在project或app目录中的名为views.py文件中 简 ...

  5. django之缓存的用法, 文件形式与 redis的基本使用

    django的缓存的用法讲解 1. django缓存: 缓存的机制出现主要是缓解了数据库的压力而存在的 2. 动态网站中,用户的请求都会去数据库中进行相应的操作,缓存的出现是提高了网站的并发量 3. ...

  6. Django 之缓存

    一.缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcac ...

  7. 初试Django的缓存系统

    初试Django的缓存系统 现在我网页的逻辑是,响应请求,查找数据库相关信息,渲染模版生成最终页面,最后返回.使用缓存后就是将这个页面保存一段时间,在有响应请求相同页面的时候,可以直接返回,不用再做那 ...

  8. Django与缓存

    我们都知道Django建立的是动态网站,正常情况下,每次请求过来都经历了这样一个过程: 接收请求 -> url路由 -> 视图处理 -> 数据库读写 -> 视图处理 -> ...

  9. Django之缓存

    由于Django构建得是动态网站,每次客户端请求都要严重依赖数据库,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中, ...

随机推荐

  1. Eclipse安装Freemarker Editor插件

    在下面网址里下载freemarker-ide: http://sourceforge.net/projects/freemarker-ide/files/ 下载完成后后解压,由于该IDE里面的free ...

  2. chrome36可以使用自定义元素的回调了

    <!DOCTYPE html> <html> <head> <title>ms-attr-*</title> <meta charse ...

  3. php多进程pcntl学习(采集新浪微博)

    上面2篇文都简明了多进程中一些需要注意的地方,这次用多进程配合curl_mulit_*来做新浪微博的采集. 先把知识点和值得注意的坑列出 /* 需求:开3个进程,并且模拟多线程来采集新浪微博用户信息, ...

  4. java高级工程师(一)

    一.无笔试题   不知道是不是职位原因还是没遇到,面试时,都不需要做笔试题,而是填张个人信息表格,或者直接面试     二.三大框架方面问题   1.Spring 事务的隔离性,并说说每个隔离性的区别 ...

  5. MySql创建多表关联的步骤

    一,一对多表的创建 1.创建主表 create table HostTable( cid varchar(32) primary key, cname varchar(100)); 2.创建从表 cr ...

  6. [Training Video - 4] [Groovy] String Functions

    def x="I like to read books before bed" def temp = x.split(" ") log.info "S ...

  7. 【美食技术】家庭自制DIY鸡蛋饼和疙瘩汤早餐视频教程

    鸡蛋饼制作方法 食材准备面粉 150g鸡蛋饼  鸡蛋饼鸡蛋 2个盐 适量水 适量(约300ml)油 20g荵花适量也可根据自己喜好准备一些调味料. 做法 鸡蛋饼是一种家常点心,做法很多,这里提供3种. ...

  8. tomcat服务器输入localhost可以访问,ip无法访问解决办法

    最近在开发项目中,遇到的一个问题是: 在 tomcat中发布一个web项目,但是发布成功后,只能用http://localhost:8080/fm访问项目,不能用 http://127.0.0.1:8 ...

  9. Python学习-8.Python的循环语句-while语句

    例子: i = 1 while i < 10: print(i) i+=1 else: print('finish') 输出1至9和finish 在while语句中同样支持for语句所支持的co ...

  10. 45 Useful JavaScript Tips, Tricks and Best Practices

    <45 Useful JavaScript Tips, Tricks and Best Practices> http://flippinawesome.org/2013/12/23/45 ...