- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Django 缓存机制
Dj ango 缓存机制
动态⽹站的问题就在于它是动态的。 也就是说每次⽤户访问⼀个页⾯,服务器要执⾏
据库查询,启动模板,执⾏业务逻辑以及最终⽣成⼀个你所看到的⽹页,这⼀切都
是动态即时⽣成的。 从处理器资源的⾓度来看,这是⽐较昂贵的。
对于⼤多 ⽹络应⽤来说,过载并不是⼤问题。 因为⼤多 ⽹络应⽤并不是
washingtonpost .com或Slashdot ;它们通常是很⼩很简单,或者是中等规模的站点,只
有很少的流量。 但是对于中等⾄⼤规模流量的站点来说,尽可能地解决过载问题是⾮
常必要的。
这就需要⽤到缓存了。
缓存的⽬的是为了避免重复计算,特别是对⼀些⽐较耗时间、资源的计算。 下⾯的伪
代码演⽰了如何对动态页⾯的结果进⾏缓存。
given a URL, try finding that page in the cache
if the page is in the cache:
return the cached page
else:
generate the page
save the generated page in the cache (for next time)
return the generated page
为此,Dj ango提供了⼀个稳定的缓存系统让你缓存动态页⾯的结果,这样在接下来有
相同的请求就可以直接使⽤缓存中的 据,避免不必要的重复计算。 另外Dj ango还提
供了不同粒度 据的缓存,例如: 你可以缓存整个页⾯,也可以缓存某个部分,甚⾄
缓存整个⽹站。
Dj ango也和”上游”缓存⼯作的很好,例如Squid(http://www .squid-cache .org)和基于浏览
器的缓存。 这些类型的缓存你不直接控制,但是你可以提供关于你的站点哪部分应该
被缓存和怎样缓存的线索(通过HTT 头部)给它们
设定缓存
缓存系统需要⼀些少量的设定⼯作。 也就是说,你必须告诉它缓存的 据应该放在哪
⾥,在 据库中,在⽂件系统,或直接在内存中。 这是⼀个重要的决定,影响您的⾼
速缓存的性能,是的,有些类型的缓存⽐其它类型快。
缓存设置在settings⽂件的 CACHE_BACKEND 中。 这⾥是⼀个CACHE_BACKEND所
有可⽤值的解释。
内存缓冲
Memcached是迄今为⽌可⽤于Dj ango的最快,最有效的缓存类型,Memcached是完全
基于内存的缓存框架,最初开发它是⽤以处理⾼负荷的LiveJournal .com随后由Danga
Interactive公司开源。 它被⽤于⼀些站点,例如Facebook和维基百科⽹站,以减少
据库访问,并⼤幅提⾼站点的性能。
Memcached是免费的 (/memcached )。它作为⼀个守护进程运⾏,并
分配了特定 量的内存。 它只是提供了添加,检索和删除缓存中的任意 据的⾼速接
⼜。 所有 据都直接存储在内存中,所以没有对使⽤的 据库或⽂件系统的开销。
在安装了Memcached本⾝之后,你将需要安装Memcached ython绑定,它没有直接和
Dj ango绑定。 这两个可⽤版本。 选择和安装以下模块之⼀:
最快的可⽤选项是⼀个模块,称为cmemcache ,在
http://gij sbert .org/cmemcache 。
如果您⽆法安装cmemcache ,您可以安装python - Memcached ,在
ftp://ftp .tummy .com/pub/python-memcached/ 。如果该⽹址已不再有效,只要到
Memcached的⽹站http://www ./memcached/ ),并从客户端A I完成
ython绑定。
若要使⽤Memcached的Dj ango ,设置CACHE_BACKEND到memcached :/ / I :port/ ,
其中I 是Memcached的守护进程的I 地址,port是Memcached运⾏的端⼜。
在这个例⼦中,Memcached运⾏在本地主机 (127 .0 .0 .1)上,端⼜为112 11 :
CACH _BACK ND = memcached://:11211/
Memcached的⼀个极好的特性是它在多个服务器间分享缓存的能⼒。 这意味着您可以
文档评论(0)