返回顶部
首页 > 资讯 > 精选 >Django项目缓存优化的介绍及具体使用
  • 354
分享到

Django项目缓存优化的介绍及具体使用

2023-06-02 04:06:05 354人浏览 八月长安
摘要

这篇文章主要讲解了“Django项目缓存优化的介绍及具体使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“DjanGo项目缓存优化的介绍及具体使用”吧!一、为什么要使用缓存大家可以想一下Dj

这篇文章主要讲解了“Django项目缓存优化的介绍及具体使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“DjanGo项目缓存优化的介绍及具体使用”吧!

一、为什么要使用缓存

大家可以想一下Django的请求响应流程:

→ 用户浏览器输入URL地址

WEB服务器Http请求转发给uWSGI服务器

→ uWSGI服务器将Request请求转发给Django应用

→ Django中间件处理Request请求

→ 视图View处理

→ 模型类Models获取数据

→ 模板Template渲染

→ 再次经过Django中间件返回

→ uWSGI服务器将Response返回给Web服务器

→ Web服务器响应客户端的HTTP请求。

这其中耗时最多的2个环节通常是视图中业务逻辑处理和从Models获取数据(sql查询),对于相同目的请求,也就是业务处理逻辑和SQL查询的数据都一样的请求,每次都进行了重复的计算,并且数据是从硬盘读取而非内存。

所以使用缓存有如下好处:

  • 降低服务器负载

  • 避免重复计算

  • 提高系统性能

二、如何进行缓存

很简单,一个Request请求过来,先去缓存中查询,有就返回;没有就去数据库查询并处理,然后把结果缓存好(供下次请求使用),再返回。用伪代码解释的话就是这样

Django项目缓存优化的介绍及具体使用

三、缓存的类型

1. Memcached 效率最高,最快的缓存2. Database caching 数据库缓存,这个指把数据缓存到数据表,比如你项目中使用的MySQL,就在Mysql中建表来专门缓存数据。不是指用Redis数据库3. Filesystem caching 文件系统缓存,将缓存会把键值存储到独立的文件中去4. Local-memory caching 使用系统内存缓存5. Dummy caching (for development) 假缓存,只在开发过程中使用,以调试缓存接口,数据并没有真正缓存6. Using a custom cache backend 自定义缓存后端,比如使用Redis

那么问题来了,我该使用哪种缓存呢?

其实常用的也就2种:Memcached或者Reids,其它基本不用考虑了。Redis国内用得多,支持RDB和AOF两种持久化方式,支持高可用集群,技术和方案很成熟。Memcached是纯内存存储,本身不支持持久化,不支持分布式,但是它内存管理效率高。

四、缓存粒度分类

  1. Per-site cache 把整个网站都缓存了,只需要在项目中设置加入缓存中间键的配置,系统便会自动对整个网站进行缓存

  2. Per-view cache 缓存某个视图

  3. Template fragment caching 模板的片段,比如Django模板继承base.html,通常是不变的导航栏

  4. Low-level cache api 低级别缓存API,比如缓存某个函数的结果,或者某个API接口

那么问题又来了,项目中我该选择什么样的缓存粒度?

是否需要缓存很简单,看内容是否变化。如果整个视图的数据通常都不变,就使用视图缓存,某些模板片段的数据不变就使用模板片段缓存等等。所以一个项目里面多种缓存粒度都有的

Django项目缓存优化的介绍及具体使用

五、Django缓存设置

这里只说一下Redis和Memcached的,其它很少用的就不罗列了,需要注意的是系统上要安装对应的缓存服务,Django开发环境中要安装连接缓存服务的包(比如django-redis或pymemcache)

Memcache缓存设置

最简单的,配置地址和端口,不一定是要在本机,也可以是其它网段的服务器或集群

Django项目缓存优化的介绍及具体使用

在本机的话,也可以使用unix Socket

Django项目缓存优化的介绍及具体使用

也可以使用多态服务器,不同端口缓存

Django项目缓存优化的介绍及具体使用

Redis缓存设置

截图一下实战课程中Redis缓存的配置,缓存网站的数据

Django项目缓存优化的介绍及具体使用

Django channels频道层的缓存

Django项目缓存优化的介绍及具体使用

Celery缓存,broker和任务的执行结果

Django项目缓存优化的介绍及具体使用

六、缓存的使用

对于Django项目缓存的数据,我们取出来或存进去操作,可以不需要直接操作底层的缓存数据,比如使用原生的Redis或Memcached命令,只需要使用Django提供的缓存API即可。就像我们使用Django ORM一样,无需关注底层数据库是mysql, postgresql或SQLite,ORM语句都一样。

例如,访问缓存

Django项目缓存优化的介绍及具体使用

使用缓存

Django项目缓存优化的介绍及具体使用

除了set(), get()还有get_or_set(), get_many(), set_many(), delete(), delete_many(), clear(), touch(), incr(), decr(), close()操作。大家可以去看看官网文档一个个操作下,要注意的是有的API不是每一个Django版本都有,比如cache.touch()是Django 2.1版本才有的。

七、Django缓存优化性能评估

缓存使用了,那效果怎么样,有什么指标可以衡量?用什么工具来衡量?

Django Debug Toolbar

这点在之前的python学习教程中有跟大家讲到过!

django-debug-toolbar是一个开源的工具,可以在看板上展示django对request/response处理的详细信息,比如当前请求响应的CPU耗时,settings/headers/request信息,当前请求使用的模板文件,静态文件,具体SQL语句和执行时间等等,看板要显示什么信息是可以灵活配置的。

右边的栏目就是django-debug-tool的看板

Django项目缓存优化的介绍及具体使用

此页面共有9次SQL查询,耗时8.62毫秒

Django项目缓存优化的介绍及具体使用

缓存命中3次,cache.get(),用时约0.91毫秒

Django项目缓存优化的介绍及具体使用

感谢各位的阅读,以上就是“Django项目缓存优化的介绍及具体使用”的内容了,经过本文的学习后,相信大家对Django项目缓存优化的介绍及具体使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Django项目缓存优化的介绍及具体使用

本文链接: https://lsjlt.com/news/228808.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Django项目缓存优化的介绍及具体使用
    这篇文章主要讲解了“Django项目缓存优化的介绍及具体使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Django项目缓存优化的介绍及具体使用”吧!一、为什么要使用缓存大家可以想一下Dj...
    99+
    2023-06-02
  • spring boot项目application.properties文件存放及使用介绍
    一、方法一多环境配置文件 我们一般都会有多个应用环境,开发环境、测试环境、生产环境,各个环境的配置会略有不同,我可以根据这个创建多份配置文件,由主配置文件来控制读取那个子配置 创建...
    99+
    2024-04-02
  • Mapstruct的具体介绍与使用
    我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。 如果小伙伴们觉得我的文章不错,记得一键三连哦 文章目录 一、mapstruct简介二、mapstruct与其他映射对比三、m...
    99+
    2023-09-03
    java
  • Django 序列化的具体使用
    目录一、简介二、使用1.基本使用2.自定义序列化字段3.连表序列化以及深度控制4.序列化字段url一、简介 django rest framework 中的序列化组件,可以说是其核...
    99+
    2024-04-02
  • vue中缓存组件keepalive的介绍及使用方法
    目录介绍使用缓存所有的组件缓存某个组件keep-alive的使用示例include和exclude属性的使用include的使用exclude的使用生命周期介绍 keep-alive...
    99+
    2022-11-13
    vue keep alive vue 缓存组件 keep alive
  • Redis之sql缓存的具体使用
    目录1.环境搭建2.Redis配置3.功能实现4.缓存注解的使用说明1.环境搭建 <!-- RedisTemplate --> <dependency>...
    99+
    2024-04-02
  • PostgreSQL工具pgAdmin的介绍及使用
    目录1. pgAdmin的介绍2. pgAdmin的使用1. pgAdmin的介绍 pgAdmin 4是一款专门针对PostgreSQL数据库的客户端管理软件,该版本在pgAdmin 3的基础上做了较大的架构变化,由之前...
    99+
    2022-07-14
    pgAdmin使用
  • 在 Windows 上使用 Django,如何优化缓存机制?
    Django是一个流行的Python Web框架,它提供了各种功能和工具来开发高效的Web应用程序。其中一个关键的功能就是缓存机制,它可以大大提高Web应用程序的性能和响应速度。在本文中,我们将讨论如何在Windows上使用Django并...
    99+
    2023-10-23
    缓存 django windows
  • wordpress自带的缓存功能使用介绍
    用静态化当然可以解决这些问题,不过对于流量不大的博客就没必要了。 wordpress自带有缓存体系,关键的函数你可以在wp-includes/cache.php或 Codex里查找到所有的函数。 你可以使用下列函数来实现...
    99+
    2022-06-12
    wordpress缓存 wp_cache
  • 如何在ASP中使用缓存来优化您的Django函数?
    在Django中,缓存是一种非常重要的优化技术,可以有效地提高应用程序的性能和响应速度。在本文中,我们将介绍如何在ASP中使用缓存来优化您的Django函数。同时,我们将提供一些示例代码,以帮助您更好地理解这些概念。 缓存是一种将计算结果存...
    99+
    2023-06-15
    缓存 django 函数
  • MVVM和MVVMLight框架介绍及在项目中的使用详解
    一、MVVM 和 MVVMLight介绍 MVVM是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式,主要目的是为了分离视图(View)和模...
    99+
    2024-04-02
  • LeetCode刷题必看:如何优化Java项目的NPM缓存?
    在Java项目中,NPM(Node Package Manager)是一个非常重要的工具,它可以管理和下载JavaScript包,以及处理项目所需的依赖关系。然而,由于JavaScript包的数量庞大,NPM的下载速度可能会非常缓慢,这会...
    99+
    2023-08-30
    leetcode npm 缓存
  • Sphinx 实现 PHP 项目的快速搜索与缓存优化
    一、Sphinx 的安装与配置要使用 Sphinx,首先需要在服务器上进行安装并进行相关的配置。以下是安装 Sphinx 的步骤:下载 Sphinx:在 Sphinx 的官方网站(http://sphinxsearch.com/downlo...
    99+
    2023-10-21
    PHP 缓存优化 Sphinx
  • MySQL存储引擎的介绍及使用
    本篇内容介绍了“MySQL存储引擎的介绍及使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、MyISAM存储引擎缺点:不支持事务最小粒度...
    99+
    2023-06-20
  • Python开源自动化工具Playwright安装及介绍使用
    目录1、Playwright介绍2、Playwright安装3、实操演示微软开源了一个非常强大的自动化项目叫 playwright-python 它支持主流的浏览器,包含:Chrom...
    99+
    2024-04-02
  • PHP本地项目及docker项目的debug安装和vscode、phpstorm中具体使用教程
    查看本地PHP应该下载的xdebug版本 点击进入网址 https://xdebug.org/wizard 将本地phpinfo的信息复制放到文本框中就可以查看与本地适配的xdebug版本 按...
    99+
    2023-09-13
    php docker xdebug phpstorm vscode
  • 浅谈redis缓存在项目中的使用
    背景 Redis 是一个开源的内存数据结构存储系统。 可以作为数据库、缓存和消息中间件使用。 支持多种类型的数据结构。 Redis 内置了 复制(replication),LUA脚...
    99+
    2024-04-02
  • 如何使用 ASP 存储缓存技术来优化你的网站体验?
    ASP.NET 是一个强大的开发框架,它可以让你使用多种技术来创建高性能的网站。其中,存储缓存技术是一种非常重要的技术,可以显著提高网站的性能和用户体验。本文将介绍如何使用 ASP 存储缓存技术来优化你的网站体验。 一、什么是缓存? 缓存是...
    99+
    2023-10-10
    存储 缓存 numpy
  • 如何在使用 PHP 和 Django 的项目中优化资源加载?
    在开发 PHP 和 Django 项目时,优化资源加载是一个重要的方面,它可以显著提高应用程序的性能和用户体验。在本文中,我们将探讨一些优化资源加载的技术,以确保您的项目具有最佳性能。 一、使用 CDN 内容分发网络(CDN)是一种网络解决...
    99+
    2023-08-28
    npm django load
  • Python中关于函数的具体用法范例以及介绍
    目录1.函数的介绍2.函数的定义和调用3.函数的参数4.参数的分类4.1.位置参数4.2.关键字参数4.3.缺省参数4.4.不定长参数1.不定长参数*args2.不定长参数* * k...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作