> Django缓存框架提供了各种场景和用例,使开发人员能够缓存经常访问的数据。以下是常见的缓存方案:
页面缓存。在这种情况下,经常在网站上经常访问的页面被完全缓存。该应用程序获取页面的缓存版本,并在提出请求时将其渲染,而不是从头开始创建页面的内容。
>数据库查询缓存。数据库查询缓存是一种依赖于经常要求数据库以获取信息的应用程序的好方法。可以通过同一片段的缓存数据来满足一系列请求,而无需点击数据库,因此可以降低数据库命中并加快服务器响应时间。
django缓存
的好处 在这种现代的环境中,缓存对Web开发人员越来越有利,在这种现代环境中,数据的本质和速度更为重要。这些是缓存的一些好处:减少了响应时间。缓存通过减少数据库命中来最大程度地减少响应时间。缓存使数据可以从方便的位置获取,而不是直接从数据库中获取。由于某些数据需要昂贵的计算,这些计算可能需要一些时间才能完成,因此每次从数据库中需要获取数据可能不是所有数据的最佳选择。通过保存数据并在需要时立即使其可用,缓存节省了一天。
设置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>确保您获取下图的输出。
注意:您可以在SitePoint上快速启动Django项目和Django应用程序。 >在设置中配置不同的缓存设置。 要使用缓存,我们需要在Django项目中进行配置,因此在本节中,我们将研究如何配置Django中可用的不同缓存系统。
>本地内存缓存django会自动使用本地内存缓存作为默认的缓存系统。它的线程安全,快速且响应迅速的缓存技术是值得注意的。
>>要在应用程序中配置本地内存缓存,请在设置中添加以下代码。
基于文件的缓存
在基于文件的缓存中,每个缓存值序列化并在缓存时分别保存在文件中。这对于小规模应用程序或基于内存的缓存不实用。
这个缓存系统的缺点是,与基于内存的缓存相比,它相对较慢。>要在您的应用程序中配置基于文件的缓存,请在设置中添加以下代码。
$ python manage.py startapp cachedapplication
$ python <span>-m venv project </span>
>
如果您拥有快速,索引良好的数据库服务器,则可以使用。要在您的应用程序中使用数据库缓存,请在设置中添加以下代码。
使用以下命令在使用缓存之前构造上面设置中提到的数据库表:
$ .<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缓存,端口= 6379,请在settings.py中添加以下代码:
>$ python <span>-m venv project </span>
>雷迪斯的复杂性和对外部服务的依赖是其权衡。重新安装和配置可能比某些其他缓存后端更棘手。在线时,它需要第二台服务器和维护。 REDIS用法会依赖外部服务。如果REDIS有问题或下降,您的应用程序的缓存功能可能会受到影响。
>好吧,这是足够的理论。在本节中,我们将演示如何在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>>
登录,提供超级用户凭据,一旦进入,就会用数据填充模型,如下图所示。
在应用程序内部,创建一个模板文件夹,然后在内部创建list_all.html文件。现在,将HTML文件空白。打开views.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视图的结果。在本节中,我们将实施视图缓存。为此,我们将对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查询,因为正在从缓存中获取数据。这有助于通过向用户提供缓存的内容来减少服务器上的负载。
>
模板碎片缓存
这个缓存涉及您项目中模板的特定部分的缓存。当您的模板具有大量计算的部分时,模板碎片缓存就派上用场了。要实现此缓存,我们使用以下标签:{%加载缓存%},{%缓存%}和{%endCache%}。 {%cache%}标签采用两个参数:缓存超时,以及用于识别特定缓存片段的唯一缓存键。
>现在在实施此缓存技术之前尝试运行该项目。下图显示了我们将获得的。
总时间为220.26ms,在7.75ms中执行三个SQL查询。
现在,让我们实施缓存技术。我们将缓存模板的>
$ python <span>-m venv project </span>在文件的顶部,我们通过{%加载缓存%}加载缓存,并用{%cache 500 programMers%}和{%endCache%}将div部分包含。
如果您再次运行该项目,您将获得下图的结果。
在上图中,我们可以看到在实施缓存后结果有所改善。
>每个位置缓存
>每个站点缓存也称为全站点缓存。它涉及缓存整个网站的页面。要实现它,您需要在设置中添加这些中间件配置。
结论
$ .<span>\project\Scripts\activate </span>总而言之,了解Django中的缓存对于希望创建高性能Web应用程序的Web开发人员至关重要。本文提供了Django中缓存的综合指南,涵盖了诸如缓存,在Django中建立缓存以及实施最佳实践的主题。有了这些知识,后端网络开发人员可以自信地将缓存纳入其Django项目以优化性能。
如果您喜欢这篇文章,请在SitePoint上查看更多Django文章。
>以上是Django缓存的综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!