Django 缓存 (Django 缓存方案)28
本文是Django教程的一部分,您可以点击Django教程系列查看所有教程。
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',
}
}
输出:
文件系统缓存:在文件系统缓存中,缓存文件将缓存在文件/文件夹位置。要设置文件系统缓存,请执行以下步骤,
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)现在访问该网站将触发缓存文件在提到的位置缓存。
输出:
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 服务都用合适的例子和它们的操作进行了比较和表达。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!