首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django的缓存有什么不同?每站点缓存,每视图缓存,指定每视图缓存和模板片段缓存

django的缓存有什么不同?每站点缓存,每视图缓存,指定每视图缓存和模板片段缓存
EN

Stack Overflow用户
提问于 2011-02-19 20:54:56
回答 1查看 872关注 0票数 0

我知道django有一些缓存方法,比如每个站点的缓存,每个视图的缓存,指定每个视图的缓存和模板片段缓存,但是这些缓存有什么区别呢?每站点缓存是指缓存系统缓存整个站点吗?我该如何理解“缓存整个网站”这句话呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-19 22:17:48

我认为文档在描述这一点上做得很好,但我将在这里粘贴它,并给出一些描述。

缓存整个站点意味着django将尝试缓存您通过中间件设置的每个视图。

每站点缓存文档的

http://docs.djangoproject.com/en/dev/topics/cache/#the-per-site-cache

设置缓存后,使用缓存的最简单方法是缓存整个站点。

基本上,它是一组中间件,所以它可以缓存所有视图。中间件应用于每个请求/响应。

每个视图的缓存文档

http://docs.djangoproject.com/en/dev/topics/cache/#the-per-view-cache

使用缓存框架的一种更细粒度的方法是缓存各个视图的输出。django.views.decorators.cache定义了一个cache_page装饰器,它将自动为您缓存视图的响应。

这是一个每个视图的缓存。您可以通过将@cache_page装饰器应用于特定视图来决定缓存特定视图(与上面的所有视图相反)

模板片段缓存文档

http://docs.djangoproject.com/en/dev/topics/cache/#template-fragment-caching

{% cache%}模板标记在给定的时间内缓存块的内容。

这让你可以缓存模板的大块(而不是上面的整个视图),例如,你可以在模板中缓存一个昂贵的查询,而站点的其他部分仍然是动态提供的。

如果某些片段无法缓存,这将非常有用。例如,在顶部显示登录用户的经典问题不可能使用每个视图的缓存,因为用户将需要更新,因此缓存无效。

如果你进一步阅读文档,你也会找到缓存api:

缓存api文档

http://docs.djangoproject.com/en/dev/topics/cache/#the-low-level-cache-api

这基本上就是如何在python代码中获得对缓存的控制(与上面的模板相反)。

代码语言:javascript
复制
# imagine you have a function that takes a day to complete.
cache.set('very_expensive_homepage_logic', takes_a_day_to_calculate())

# now if you call get() with your key, it will be returned and you won't have to wait a day to calculate.
cache.get('very_expensive_homepage_logic')
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5050876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档