Django 缓存 (Django 缓存方案)28

作者 : 慕源网 本文共3351个字,预计阅读时间需要9分钟 发布时间: 2021-11-23 共192人阅读

本文是Django教程的一部分,您可以点击Django教程系列查看所有教程。

Django 缓存 (Django 缓存方案)28

Django 缓存介绍

当在 Web 应用程序中请求页面时,应在后端执行多个过程以将页面提供给请求者。该过程可能是点击数据库查询、调用模板、执行多个计算等。对于流量大的站点,从头开始为每个页面调用执行这些操作可能会变得成本很高。解决这个问题的一种方法是设置缓存系统。缓存系统将保存昂贵操作的结果,以便下次可以省略计算。

Django 缓存的类型

就Django而言,Django分为5大类,这5大类是Django缓存过程中的关键分类。这些类型中的每一种都有自己的缓存数据的方式。另一方面,意图是将数据存储好并进行认知处理。下面讨论了各种类型的缓存:

  • 内存缓存
  • 文件系统缓存
  • 本地内存缓存
  • 虚拟缓存
  • 数据库缓存

缓存是如何工作的?

缓存过程可以通过多种方式执行,通过数据库、内存或文件系统等,每种方法都可能比另一种更有效。下面解释了各种缓存方法,

Memcahed:Memcached 是一个守护进程服务器,它将执行缓存过程。Memcached 将作为守护进程运行,并为其分配内存 RAM。市场上有几种内存缓存。这里列出了一些流行的,

1) pylibmc
2) pymemcache
3) memcachedcache

下面的例子展示了基于 memcachedcache 的 Django 缓存系统,

1) 下载 Memcached 软件并将软件解压到桌面位置。

2) 要查看Memcached 的各种选项,可以使用下面的命令。在执行命令查看选项之前,请确保切换到 Memcached 目录。

Cd C:\Users\ANAND\Downloads\memcached-win32-1.4.4-14
.\memcached.exe -h

3) 使用其命令将 Memcached 设置为活动状态,下面给出了一个示例命令。

.\memcached.exe -m 512 -vvv
slab class 32: chunk size 96256 perslab 10
slab class 33: chunk size 120320 perslab 8
slab class 34: chunk size 150400 perslab 6
slab class 35: chunk size 188000 perslab 5
slab class 36: chunk size 235000 perslab 4
slab class 37: chunk size 293752 perslab 3
slab class 38: chunk size 367192 perslab 2
slab class 39: chunk size 458992 perslab 2
slab class 40: chunk size 573744 perslab 1
slab class 41: chunk size 717184 perslab 1
slab class 42: chunk size 1048576 perslab 1
<624 server listening (auto-negotiate)
<652 server listening (auto-negotiate)
<656 send buffer was 65536, now 268435456
<656 server listening (udp)
<656 server listening (udp)
<656 server listening (udp)
<656 server listening (udp)
<660 send buffer was 65536, now 268435456
<660 server listening (udp)
<660 server listening (udp)
<660 server listening (udp)
<660 server listening (udp)

4)在python中安装Memcached客户端

pip install python-memcached

6) 在 Django 项目中,在 settings.py 文件中设置缓存值,

CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}

输出:

Django 缓存 (Django 缓存方案)28

文件系统缓存:在文件系统缓存中,缓存文件将缓存在文件/文件夹位置。要设置文件系统缓存,请执行以下步骤,

1) 在 settings.py 文件中进行以下更改,在下面的更改中,位置提到了要存储更改的位置。

CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': 'D:\sample',
}
}
  • 这里确保位置是绝对的,因为位置需要是绝对的,所以它必须从根目录开始。

2)以相同的顺序将突出显示的组件添加到中间件中。

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

3)现在访问该网站将触发缓存文件在提到的位置缓存。

输出:

Django 缓存 (Django 缓存方案)28

Local-Memorycache:本地内存缓存是 Django 在没有明确定义其他缓存服务时使用的默认缓存服务。

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

这里的位置提到了内存存储。仅当使用多个内存存储时才可以提及。

虚拟缓存:如果 Web 应用程序不希望在后端有任何缓存,则可以启动虚拟缓存。虚拟缓存不会缓存任何东西,而是会在不做任何事情的情况下启动缓存接口。

CACHES = { 'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
} }

数据库缓存:数据库缓存是在数据库中捕获缓存值的过程。这里必须引用数据库缓存类,然后预期会提到目标表。首先,数据库缓存类被放置在核心库中的Django 库中,以及db 中后端部分的缓存库中和数据库缓存中。从那里开始,在缓存服务的位置部分中必须提到表。

CACHES = { 'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'cache_table',
} }

在上面的代码示例中,BACKEND 值设置为基于数据库的库“django.core.cache.backends.db.DatabaseCache”,而位置值设置为期望存储该值的表。需要在数据库中创建缓存表。缓存表最有可能使用 python manage.py cachetable 命令创建。上面的命令本身将创建预期的表。更有趣的是,可以使用多个表来存储缓存。这意味着在某一时刻,多个表可用于缓存服务。这是数据库缓存如何在 Django 中工作的另一个示例。数据库级别的缓存过程与文件和内存分配级别的服务缓存非常相似。

结论

给定的文章涉及如何在 Django 中处理这些值。它还解释了与 Django 相关的各种类型的缓存服务。所有这些类型的 Django 服务都用合适的例子和它们的操作进行了比较和表达。


慕源网 » Django 缓存 (Django 缓存方案)28

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录