热门搜索 :
考研考公
您的当前位置:首页正文

django缓存怎么用

2024-07-17 来源:伴沃教育

通常,计算值是昂贵的(即资源匮乏和缓慢),因此将值保存到可快速访问的缓存中可以有巨大的好处,为下一次需要做好准备。

这是一个足够重要和强大的技术,Django包括一个综合的缓存框架,以及其他较小的缓存功能。

django是动态网页,一般来说需要实时的生成访问的页面,展示给访问者,这样,内容可以随时变化,也就说请求到达视图函数之后,然后进行模板渲染,将字符串返回给用户,用户会看到相应的html页面。但是如果每次请求都从数据库中请求并获取数据,并且当用户并发量十分大的时候,这将服务器性能将大大受到影响。因此使用缓存能有效的解决这类问题。如果能将渲染后的结果放到速度更快的缓存中,每次有请求过来,先检查缓存中是否有对应的资源,如果有,直接从缓存中取出来返回响应,节省取数据和渲染的时间,不仅能大大提高系统性能,还能提高用户体验。

缓存的适合场景

对页面实时性要求不高的页面。对于大多数的购物网站,短期内商品的描述是没有变化的,可以使用缓存。

缓存优先级

由django的生命周期知各级缓存的优先级:中间件应用的全局缓存>视图函数缓存>模板渲染下的局部视图使用缓存。

局部视图 使用

在模板的顶端附近加入{% load cache %}以通知模板存取缓存标签。

模板标签{% cache %}在给定的时间内缓存了块的内容。 它至少需要两个参数: 缓存超时时间(以秒计)和指定缓存片段的名称。

{#局部缓存  静态数据缓存#}
{% load cache %}
{#引入TemplateTage#}
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>cache</title>
</head>
<body>
{#    小力度细致缓存#}
    {% cache 5 c1 %}
{#两个参数: 缓存超时时间(以秒计)和指定缓存片段的名称。 #}
          .. sidebar ..
    {% endcache %}
</body>
</html>

单独视图缓存 使用

from django.views.decorators.cache import cache_page
@cache_page(10)
#参数为缓存失效时间
def cache(request):
    pass

全局缓存  配置

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

'django.middleware.cache.UpdateMiddleware',

 服务端响应response时作用 查看是否有缓存,如果没有则写入缓存,否则直接返回给客户端

'django.middleware.cache.FetchFormCacheMiddleware',

客户端请求request时作用 查看是否有缓存,如果有不经过views直接返回,否则进入views视图执行函数获取缓存

 客户端第一次发出请求是通常是没有缓存的,

 因此request请求由中间件FetchForm经过检查没有缓存后进入views,

 然后response携带缓存到中间件Update后写入缓存,再返回给客户端。

伴沃教育还为您提供以下相关内容希望对您有帮助:

如何在django中使用redis做缓存服务器

和单个view缓存 站点缓存:settings.py MIDDLEWARE = [ # 站点缓存 , 注意必须在第一个位置 'django.middleware.cache.UpdateCacheMiddleware', ... # 站点缓存, 注意必须在最后一个位置 'django.middleware.cache.FetchFromCacheMiddleware',]视图缓存:views.py from django.shortcuts ...

如何为SAE Django工程设置全站Memcached缓存

1 在服务管理-&gt;Memcache中初始化Memcache服务,并分配合适的容量。2 修改settings.py,添加配置:3 一段时间后,即可在SAE服务管理—Memcache中观察缓存命中率和内存使用情况

踢足球的英文

play football

用Django开发web后端,真的比SpringBoot要省事吗?

1、用于创建模型的对象关系映射。2、为最终用户设计较好的管理界面。3、URL 设计。4、设计者友好的模板语言。5、缓存系统。Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权...

django redis-cache服务重启后,缓存还在吗

还在,这个存储在redis里面,redis本身带持久化机制,正常的服务器重启对这个没有影响,除非你的redis 碰到突然crash这类的问题,可能会影响短时间内的数据正常。

django 制作web网站,动态页面数据已更新,但是无法刷新,这是怎么回事...

首先,如果现在成功返回的注册成功信息,你点击了F5或浏览器上的刷新,浏览器会默认再发一次请求,这时会问你是否继续提交,如果你点了继续提交,那么你之前的注册信息会再次被提交,如果后台不去验证唯一性,那么会出现两条相同的记录。其次,假设不是上面所说的再次post提交,你直接浏览器输入你的这个...

全栈开发都包含哪些技术

运用开发框架和第三方库 —— 流行的开发语言,一般都伴有出色的开发框架,比如Java的Spring、MyBatis、Hibernate,Python的Django,PHP的 thinkphp、yin,nodeJs的 express 等等。这些开发框架往往都遵循软件开发领域的一些最佳实践,并由非常优秀的开发人员创建。熟练使用这些开发框架或第三方库能够避免重复...

Ph学习路线图大学生必看

6)Vue框架:框架的使用以及注意点 04Web开发 学习目标 能够熟练使用Flask和Diango框架进行web服务的开发。 学习重点: 1)Flaskweb框架的使用 模板与表单、数据库的使用、单元测试、第三方扩 展与云服务器的使部署、Redis缓存使用、GIT版本控 制、用、验证码的收发、网站项目开发实战 2)Djangoweb框架的使用框架的使用...

Python都是学什么?

Web请求生命周期、自行开发简单的Web框架、MTV\MVC框架介绍、Django框架使用、路由系统、模板引擎、FBV\CBV视图、Models ORM、FORM、表单验证、Django session &amp; cookie、CSRF验证、XSS、中间件、分页、自定义tags、Django Admin、cache系统、信号、message、自定义用户认证、Memcached、redis缓存学习、RabbitMQ...

如何在windows下安装reviewboard

使用patch-2.5.9-7-setup.exe进行安装。建议安装在C:\GnuWin32目录。安装完之后,将bin目录,添加到系统的环境变量当中(注意是系统环境变量,不是个人环境变量)。 安装memcached工具,该工具用于在reviewboard过程中进行数据缓存处理。使用memcached-1.2.6-win32-bin.zip,将其解压在c:\目录下,并...

Top