首页 >后端开发 >Python教程 >Django缓存的综合指南

Django缓存的综合指南

Christopher Nolan
Christopher Nolan原创
2025-02-10 12:29:11367浏览

Django缓存的综合指南

钥匙要点

  • 了解基础知识:掌握Django中缓存的基础概念,包括其对减少服务器负载的重要性以及通过加快响应时间来增强用户体验的重要性。
  • >设置和配置:学习如何设置DJANGO项目并配置各种缓存方法,例如本地内存,基于文件,数据库和REDIS CACHING,``settings.py.py`文件'' 用于高级缓存的REDIS:潜入Django中使用Redis进行缓存,该缓存提供了快速的数据检索功能,使其适合于高性能和分布式系统。
  • 实际实施:探索实用的缓存技术,例如查看缓存,模板碎片缓存和每个站点缓存,以显着优化Web应用程序性能。
  • 绩效优势:认识到通过实施Django的缓存策略可以实现的应用速度和效率的显着提高,最终导致了更好的最终用户体验。
  • 在本文中,您将对Django和整个Web开发中的缓存有一个全面的了解。您将了解什么是缓存,缓存的好处,如何在Django建立缓存,Django支持的后端系统以及缓存的最佳实践。 在文章结尾处,作为后端Web开发人员,您将对缓存以及如何在Django项目中实施它以获得最佳性能。
  • > Django框架是当今Web开发人员使用的最受欢迎的后端框架之一。作为开发人员,构建具有高性能的Web应用程序应该是您列表中的目标之一。因此,在Django中构建Web应用程序以进行高性能不应该是麻烦,因为Django带有一个缓存框架,该框架允许您使用各种缓存后端,例如内存中缓存,基于文件的缓存,数据库缓存等。 django caching简介
  • Web开发中的缓存是Web开发人员使用的一种技术来提高Web应用程序的性能。每个Web应用程序都有其用户一直希望使用的资源。资源可以是从直接网页到存储在数据库中的数据的任何内容。缓存在最大化访问资源的速度方面起着重要作用。
  • 常见的缓存方案和用例

> Django缓存框架提供了各种场景和用例,使开发人员能够缓存经常访问的数据。以下是常见的缓存方案:

  • 页面缓存。在这种情况下,经常在网站上经常访问的页面被完全缓存。该应用程序获取页面的缓存版本,并在提出请求时将其渲染,而不是从头开始创建页面的内容。

  • >数据库查询缓存。数据库查询缓存是一种依赖于经常要求数据库以获取信息的应用程序的好方法。可以通过同一片段的缓存数据来满足一系列请求,而无需点击数据库,因此可以降低数据库命中并加快服务器响应时间。

  • >会话和身份验证缓存。缓存可用于提供简化的用户体验和更快的响应时间。由于缓存的数据将使用户能够轻松地在应用程序的身份验证部分中移动,因此缓存身份验证和会话详细信息可以帮助减少冗余的身份验证操作。
  • django缓存

    的好处 在这种现代的环境中,缓存对Web开发人员越来越有利,在这种现代环境中,数据的本质和速度更为重要。这些是缓存的一些好处:

提高了性能。缓存通过减少服务器负载来增强Web应用程序的性能。当服务器从应用程序获得请求时,缓存可确保使用先前缓存的数据满足某些请求。这样可以防止服务器必须从头开始执行这些操作。结果,用户的体验总体上得到了改善,并且反应时间得到了加速。

减少了响应时间。缓存通过减少数据库命中来最大程度地减少响应时间。缓存使数据可以从方便的位置获取,而不是直接从数据库中获取。由于某些数据需要昂贵的计算,这些计算可能需要一些时间才能完成,因此每次从数据库中需要获取数据可能不是所有数据的最佳选择。通过保存数据并在需要时立即使其可用,缓存节省了一天。
  • 资源优化。 Web应用程序中的缓存数据或资源允许可以访问和检索资源,而无需执行重复操作以输出相同的资源。

    设置Django项目
  • >本节中的主要任务是创建虚拟环境并为项目安装所需的模块。要创建虚拟环境,请在您的终端中输入此命令:

  • >该项目的所有模块都将安装在此环境中,因此要开始使用它,我们需要激活它。
  • 在Windows上使用以下方式:

  • 以及在MacOS或Linux上,使用以下方式:

在实施缓存之前,要做的第一件事是设置Django项目。因此,让我们首先安装Django。打开您的终端,然后运行此命令:

$ python <span>-m venv project
</span>

成功安装Django后,让我们创建一个Django项目和应用程序。创建一个Django项目运行:

$ .<span>\project\Scripts\activate
</span>

>导航到项目的文件夹中。在这里,我们将创建一个Django应用程序。运行此命令:

$ <span>source project/bin/activate
</span>

然后运行此:

$ pip <span>install django
</span>

成功创建项目和应用程序后,我们必须向项目注册该应用程序。打开settings.py文件,然后使installed_apps列表看起来像这样:

>
$ django-admin startproject cachedproject

>注意:要在您的Django项目中使用该应用程序,必须在installed_apps列表中注册。

> 现在,要验证Django框架是否已成功安装,请进行测试。在终端中,运行此命令:

$ <span>cd cachedproject
</span>
确保您获取下图的输出。

Django缓存的综合指南

现在复制URL并将其粘贴到Web浏览器中。预期的输出如下所示。

Django缓存的综合指南

注意:您可以在SitePoint上快速启动Django项目和Django应用程序。 >在设置中配置不同的缓存设置。 要使用缓存,我们需要在Django项目中进行配置,因此在本节中,我们将研究如何配置Django中可用的不同缓存系统。

>本地内存缓存

的名称暗示,本地内存缓存,有时缩写为locmem,将缓存的数据存储在托管机的RAM中。> 如果您在settings.py文件中不提供替代的缓存机制,则

django会自动使用本地内存缓存作为默认的缓存系统。它的线程安全,快速且响应迅速的缓存技术是值得注意的。

>

>本地内存缓存不太适合在生产环境中使用,因为它包含了一种每条程序机制,该机制可防止任何类型的交叉处理缓存,并使单个流程维护单独的私有缓存实例。尽管如此,这仍然是一个不错的选择。

>

>要在应用程序中配置本地内存缓存,请在设置中添加以下代码。

基于文件的缓存

在基于文件的缓存中,每个缓存值序列化并在缓存时分别保存在文件中。这对于小规模应用程序或基于内存的缓存不实用。

这个缓存系统的缺点是,与基于内存的缓存相比,它相对较慢。

>要在您的应用程序中配置基于文件的缓存,请在设置中添加以下代码。
$ python manage.py startapp cachedapplication

如果您在Windows上,请确保使用类似的驱动器字母开始位置的路径:

$ python <span>-m venv project
</span>

>数据库缓存

除了将缓存存储在文件中并托管机器的RAM之外,Django还提供了将缓存存储在数据库中的能力。

>

如果您拥有快速,索引良好的数据库服务器,则可以使用。

要在您的应用程序中使用数据库缓存,请在设置中添加以下代码。

使用以下命令在使用缓存之前构造上面设置中提到的数据库表:

$ .<span>\project\Scripts\activate
</span>

上面的命令以Django的数据库缓存系统期望的适当格式创建数据库中的表。桌子的名称是从该位置取的。在这种情况下,表的名称将是my_cache_table。

$ <span>source project/bin/activate
</span>
> memcached缓存

Memcached是一个内存的缓存系统,即使在几家受欢迎的公司中,Web开发人员也使用了数据库访问并提高网站性能。 与LocMem缓存相反,Memcached作为守护程序操作,这意味着Memcached Server作为后台过程运行,与任何直接用户交互无关。因此,必须将备忘录分别安装在您的机器上。然后在您的Django应用程序中,安装和配置其一种绑定之一,例如PyliBMC或Pymemcache,以使用Memcached。

>可以通过添加缓存设置,位置,IP地址和其他详细信息来将Django应用程序链接到Memcached守护程序,如下所示:

> MEMCACHED技术特别适合具有较高读取或查询负载的应用,因为它是为快速数据存储和检索的。

> memcached的缺点是,由于数据存储在内存中,因此如果您的服务器崩溃,它将丢失。

redis

REDIS是一个可用于缓存的内存数据库。它使用REDIS内存数据存储缓存数据。 Redis以其快速性和适应性而闻名,使其成为分布式系统和高性能缓存的理想选择。

>
$ pip <span>install django
</span>
>要在应用程序中使用REDIS缓存数据,您需要在本地或远程计算机上运行的Redis服务器。要在计算机上设置Redis,请阅读REDIS入门指南。

>

设置Redis服务器后,您需要为REDIS安装Python绑定。使用此命令安装它:

redis-py界面是由django或使用django-redis和redis软件包的本机支持的绑定。

考虑到您的Redis Server在Localhost(127.0.0.1)上运行,

要在您的应用程序中配置redis缓存,端口= 6379,请在settings.py中添加以下代码:

>
$ python <span>-m venv project
</span>

>雷迪斯的复杂性和对外部服务的依赖是其权衡。重新安装和配置可能比某些其他缓存后端更棘手。在线时,它需要第二台服务器和维护。 REDIS用法会依赖外部服务。如果REDIS有问题或下降,您的应用程序的缓存功能可能会受到影响。

>

>使用redis

在Django中执行缓存

好吧,这是足够的理论。在本节中,我们将演示如何在Django应用程序中执行缓存。我们将重点介绍三种形式的缓存:

  • >查看缓存
  • 模板碎片缓存
  • >每个位置缓存

,但是在我们详细执行每个缓存表格之前,让我们首先正确设置项目。我们将创建,注册和填充模型,配置应用程序的URL,创建模板,安装Django调试工具栏并进行配置。

>在CachedApplication应用程序中,打开Models.py文件并使其看起来像:

接下来,打开admin.py文件并粘贴此代码:>
$ .<span>\project\Scripts\activate
</span>

此代码摘要注册Django Admin仪表板中的模型程序员。

$ <span>source project/bin/activate
</span>
>在填充模型之前,让我们进行一些迁移。在终端中,运行以下内容:

也可以运行以下操作:

$ pip <span>install django
</span>
在Django中,我们可以通过两种方式填充我们的模型:通过终端和管理仪表板。但是为了简单起见,我们将使用管理仪表板。由于管理仪表板仅适用于超级用户,因此我们需要创建一个。在终端中,运行以下命令:

$ django-admin startproject cachedproject
此命令将提示您输入超级用户的详细信息,例如用户名,电子邮件和两个密码。

成功创建超级用户后,启动本地服务器,然后在浏览器中输入此URL:http://127.0.0.1:8000/admin/。下图显示了您将被带到的页面。
$ <span>cd cachedproject
</span>
>

登录,提供超级用户凭据,一旦进入,就会用数据填充模型,如下图所示。

Django缓存的综合指南

在应用程序内部,创建一个模板文件夹,然后在内部创建list_all.html文件。现在,将HTML文件空白。打开views.py文件并使其看起来像这样:

Django缓存的综合指南

现在,让我们在项目的urls.py文件中注册房屋视图。在cachedproject文件夹中,打开urls.py文件并粘贴此代码:>

现在打开list_all.html文件并粘贴以下代码:>
$ python <span>-m venv project
</span>

>让我们安装一个Django调试工具栏。这是一个Python软件包,可帮助开发人员监视其Django应用程序的性能,提供有关数据库查询,HTTP请求,模板渲染时间等的详细信息。因此,在您的终端中,输入此命令:

$ .<span>\project\Scripts\activate
</span>

>要配置django-debug-toolbar,打开settings.py文件并编辑installed_apps列表,以如下查

$ <span>source project/bin/activate
</span>
>将调试工具栏添加到中间件列表:

$ pip <span>install django
</span>
使调试工具栏中间件之后出现:

>

$ django-admin startproject cachedproject
也应该在此之前出现:

$ <span>cd cachedproject
</span>
添加REDIS CACE配置如下:

$ python manage.py startapp cachedapplication
>另外,将此代码添加到设置。

最后,让我们在URL.PY文件中配置调试工具栏URL。在导入下方,添加此代码线:

>
INSTALLED_APPS <span>= [
</span>    <span>'django.contrib.admin',
</span>    <span>'django.contrib.auth',
</span>    <span>'django.contrib.contenttypes',
</span>    <span>'django.contrib.sessions',
</span>    <span>'django.contrib.messages',
</span>    <span>'django.contrib.staticfiles',
</span>    <span># new application added
</span>    <span>'cachedapplication',
</span><span>]
</span>

在URLPATTERNS列表中添加此代码:

$ python manage.py runserver

到达了这么远,我们很高兴去。运行服务器并将此URL粘贴到您的浏览器中:http://127.0.0.1:8000/home/。下图显示了我们获取的页面。

<span># CACHES dictionary which contains caching configurations.
</span>CACHES <span>= {
</span>    <span># a cache alias or name. In this case, we use "default" as the alias.
</span>    <span>"default": {
</span>        <span># Here, we're using the in-memory cache backend.
</span>        <span>"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
</span>
        <span># LOCATION parameter gives a unique name or identifier to this cache instance.
</span>        <span>"LOCATION": "unique-snowflake",
</span>    <span>}
</span><span>}
</span>

>每次使用此视图运行应用程序时,都会进行SQL查询。在这种情况下,三个查询已采用2.60ms。因此,为避免每次对相同数据进行SQL查询,我们将实现视图缓存。 Django缓存的综合指南

>查看缓存

>顾名思义,查看缓存的缓存涉及缓存单个django视图的结果。在本节中,我们将实施视图缓存。为此,我们将对View.py文件进行一些修改。打开它并添加此导入:

在视图上方,还添加此装饰符:

(60*15)是传递给@cache_page的参数。它代表秒内的缓存超时。房屋视图将缓存15分钟。
<span># A CACHES dictionary, which contains caching configurations.
</span>CACHES <span>= {
</span>    <span># we use "default" as the alias.
</span>    <span>"default": {
</span>        <span># Here, we're using the file-based cache backend.
</span>        <span>"BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
</span>
        <span># LOCATION parameter to specify the file system path where cached data will be stored.
</span>        <span>"LOCATION": "/var/tmp/django_cache",
</span>    <span>}
</span><span>}
</span>

现在访问相同的视图并刷新页面。我们将在下面显示结果。

>
CACHES <span>= {
</span>    <span>"default": {
</span>        <span>"BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
</span>        <span>"LOCATION": "C:/my/path-to/file",
</span>    <span>}
</span><span>}
</span>

在上图中,我们可以看到执行了0个SQL查询,因为正在从缓存中获取数据。这有助于通过向用户提供缓存的内容来减少服务器上的负载。

>

模板碎片缓存

Django缓存的综合指南这个缓存涉及您项目中模板的特定部分的缓存。当您的模板具有大量计算的部分时,模板碎片缓存就派上用场了。要实现此缓存,我们使用以下标签:{%加载缓存%},{%缓存%}和{%endCache%}。 {%cache%}标签采用两个参数:缓存超时,以及用于识别特定缓存片段的唯一缓存键。

>

>现在在实施此缓存技术之前尝试运行该项目。下图显示了我们将获得的。

Django缓存的综合指南

总时间为220.26ms,在7.75ms中执行三个SQL查询。

现在,让我们实施缓存技术。我们将缓存模板的
部分。打开模板/list_all.html,然后将其修改为如下:

>

$ python <span>-m venv project
</span>
在文件的顶部,我们通过{%加载缓存%}加载缓存,并用{%cache 500 programMers%}和{%endCache%}将div部分包含。

如果您再次运行该项目,您将获得下图的结果。>

在上图中,我们可以看到在实施缓存后结果有所改善。 Django缓存的综合指南>每个位置缓存

>每个站点缓存也称为全站点缓存。它涉及缓存整个网站的页面。要实现它,您需要在设置中添加这些中间件配置。

>还添加以下行:

结论
$ .<span>\project\Scripts\activate
</span>
总而言之,了解Django中的缓存对于希望创建高性能Web应用程序的Web开发人员至关重要。本文提供了Django中缓存的综合指南,涵盖了诸如缓存,在Django中建立缓存以及实施最佳实践的主题。有了这些知识,后端网络开发人员可以自信地将缓存纳入其Django项目以优化性能。

如果您喜欢这篇文章,请在SitePoint上查看更多Django文章。

>

以上是Django缓存的综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn