redis实战(8):页面缓存

在动态生成网页的时候,通常会使用模板语言来简化网页的生成操作。通过浏览数据进行分析,发现自己所处理的95%的web页面每天最多只会改变一次,这些页面的内容实际上并不需要动态生成,而我们的工作就是想办法不再生成这些页面,减少网站再动态生成内容上面说话的时间,可以降低网站相同负载所需的服务器数量,并网网站的速度变得更快。
所有标准的python应用框架都提供了在处理请求之前后者之后添加层的能力,这样的层通常叫做中间件或者插件,我们将创建一个这样的层来调用redis缓存函数:对于宇哥不能被缓存的请求,函数直接生产并返回页面;而对于可以被缓存的请求,函数首先会尝试从缓存里取出并返回被缓存的页面,如果缓存页面不存在,那么函数会生成页面并缓存redis 5min,最后将页面返回给函数调用者。

def cache_request(conn,request,callback){
	if note can_cache(conn,request)
		return callback(request)
	page_key= "cache:"+hash_request(request)
	content = conn.get(page_key)

	if not content:
		content = callback (request)
		conn.setex(page_key,content,300)
	renturn content
}

上述代码可以让网站5min之内无需再为他们动态生成视图页面。取决于网页的内容多复杂,这一改动可以将包含大量属鸡的也没得延迟值从20~50ms降低至查询一次redis所需的时间:查询本地redis的延迟通常小于1ms,查询统一数据中心的redis延迟低于5ms。

相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页