首先看Django官网的介绍:
动态网站的一个基本权衡就是他们是动态的,每次一个用户请求一个页面,web服务器进行各种各样的计算-从数据库查询到模板渲染到业务逻辑-从而生成站点访问者看到的页面。从处理开销的角度来看,相比标准的从文件系统读取文件的服务器调度,这是昂贵了不少。尽管对于大多数网站来说,这种开销不是什么大问题,因为大多数web应用不过是想学学院的首页那样,都是小到中型的站点,流量也很少。但对于中到大型的站点来说,必须尽可能的减少开销。这就是缓存的由来。django自带一个强大的缓存系统,提供不同层次的缓存粒度:你可以缓存某个视图函数的输出,或者只是某个特别难生成的部分或者是整个站点。同时django也有类似“上流”缓存的东西,类似于Squid和基于浏览器的缓存,这类缓存是你无法直接控制但是你可以通过一些提示(比如http头部)指定你网站的那些部分需要和如何缓存。
缓存系统工作原理:
对于一个给定的url,尝试从缓存中找到对应的url网址,检查页面是否存在缓存中,如果存在,直接将缓存中的页面返回,如果缓存中没有,一系列操作(比如数据库查询)后,将内容页面保存到缓存系统中以供下次使用,并将生成的页面返