Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django的缓存有什么不同?每个站点缓存、每个视图缓存、指定每个视图缓存和模板片段缓存_Python_Django_Caching_Memcached - Fatal编程技术网

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

Python django的缓存有什么不同?每个站点缓存、每个视图缓存、指定每个视图缓存和模板片段缓存,python,django,caching,memcached,Python,Django,Caching,Memcached,我知道django有一些缓存方法,比如每站点缓存、每视图缓存、指定每视图缓存和模板片段缓存 但是这些缓存之间有什么不同? 每站点缓存是指缓存系统缓存整个站点? 我如何理解“缓存整个站点”这个词 我认为文档在描述这方面做得很好,但我将把它粘贴在这里,并给出一些描述 缓存整个站点意味着django将尝试缓存您通过中间件设置的每个视图 每个站点缓存文档 设置缓存后,使用缓存的最简单方法是缓存整个站点 基本上,它是一组中间件,因此它缓存所有视图。中间件应用于每个请求/响应 按视图缓存文档 使用缓存的

我知道django有一些缓存方法,比如每站点缓存、每视图缓存、指定每视图缓存和模板片段缓存 但是这些缓存之间有什么不同? 每站点缓存是指缓存系统缓存整个站点?
我如何理解“缓存整个站点”这个词

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

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

每个站点缓存文档

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

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

按视图缓存文档

使用缓存的更细粒度的方法 框架是通过缓存 个人观点。django.views.decorators.cache定义了一个缓存页面装饰器,它将自动为您缓存视图的响应

这是每视图缓存。您可以通过将@cache\u页面装饰器应用于特定视图而不是上述所有视图来决定缓存某个视图

模板片段缓存文档

{%cache%}模板标记缓存 给定对象的块的内容 时间量

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

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

如果您进一步阅读文档,您还将看到缓存api:

缓存api文档

这就是在python代码中控制缓存的基本方式,而不是上面提到的模板

# 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')