zoukankan      html  css  js  c++  java
  • django性能优化缓存view详解

    缓存提升性能:

      1、通常的view会去数据库端执行相关的查询然后交由template渲染、数据库访问通常就是性能的瓶颈所在。

      2、由于许多数据要很久才会变一次、两次连续的数据库访问通常返回的数据是一样的;更进一步数据是一样的、

      那就是说返回的response内容就是一样的。

      3、如果能直接把response缓存起来、减少对数据库的访问以提升性能、如果直接把response缓存在内存中、那么

      view性能的提升会更高。

    怎么做:

      由上面的内容可能知道、要解决缓存访问,可以分解成两个更小的问题 a:缓存谁 & b缓存在哪里?

      缓存在哪里:

        这个可能通过配置来说明、缓存的内容是保存在内容中、还是保存在文件中 ... ...

      缓存谁:

        把想缓存的对象打上标记就行、这样它就和普通的对象区分开了 

    以下用一个例子来说明缓存在django中的使用

    配置缓存对象的保存位置:

    在项目的settings.py文件中增加如下内容

    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        }
    }

      我打算把对象缓存到内存里

    给view打上标记说明这个view是要缓存的

    @cache_page(60 * 15, cache="default")
    def index(request):
        print('this index ...')
        return render(request,'learning/index.html')

      @cache_page(60*15,cache="default") 的意思就是说缓存生命周期是15分钟、缓存中内存中(我们default配置的就是在内存中)

    查看效果:

      1、第一次访问

       在server端可以看到如下日志

    this index ...
    [22/Mar/2018 12:59:01] "GET /learning/ HTTP/1.1" 200 2218
    [22/Mar/2018 12:59:01] "GET /static/favicon.ico HTTP/1.1" 200 67646

      可以看到有打印“this index ...”说明这个view是有被执行的

      2、第二次访问页面、server端可以看到如下日志

    this index ...
    [22/Mar/2018 12:59:01] "GET /learning/ HTTP/1.1" 200 2218
    [22/Mar/2018 12:59:01] "GET /static/favicon.ico HTTP/1.1" 200 67646
    [22/Mar/2018 12:59:13] "GET /learning/ HTTP/1.1" 200 2218
    [22/Mar/2018 12:59:13] "GET /static/favicon.ico HTTP/1.1" 200 67646

      这一次并没有打印"this index ..." 说明view并没有执行、django直接把之前执行view的结果返回给了浏览器。

    ----------------------------------------------------------------------------------------------

  • 相关阅读:
    47. VUE-路由是什么?如何实现页面不请求刷新?
    21. SpringBoot 实现国际化 [i18n]
    20. SpringBoot 默认访问首页 以及 加载静态资源
    46. VUE 脚手架 —— vue ui 管理 以及 查看原始配置
    45. VUE ClI4 创建项目
    44.VUE2 项目目录结构解析 和 Runtime-Compiler和Runtime-only的区别
    2 . Mybatis — 增-删-改
    19. SpringBoot 扩展 SpringMVC功能、 接管、自定义SpringMVC
    17. Thymeleaf 模板 的 使用 和 语法
    16. SpringBoot 模板引擎
  • 原文地址:https://www.cnblogs.com/JiangLe/p/8622413.html
Copyright © 2011-2022 走看看