2013-04-29 62 views
1

写入我的静态头版下面给出的类的静态头版。谷歌建议memcaching静态页面更好的性能,但我失去了如何去做这件事。有什么建议么?内存缓存在GAE

class MainHandler(webapp2.RequestHandler): 
    def get (self, q): 
    if q is None: 
     q = 'index.html' 

    path = os.path.join (os.path.dirname (__file__), q) 
    self.response.headers ['Content-Type'] = 'text/html' 
    self.response.write (template.render (path, {})) 

回答

2

Memcaching?你确定?你不会得到任何性能改进,因为它只是模板渲染。无论如何,你可以像下面描述的那样做。

from google.appengine.api import memcache 

class MainHandler(webapp2.RequestHandler): 
    def get (self, q): 
    if q is None: 
     q = 'index.html' 

    rendered = memcache.get('static_%s' % q) 
    if rendered is None: 
     path = os.path.join (os.path.dirname (__file__), q) 
     rendered = template.render (path, {}) 
    self.response.headers['Content-Type'] = 'text/html' 
    self.response.write(rendered) 

更好的方法是使用客户端缓存,如添加Last-Modified和eTag标头。 如何输出304未修改,你可以在这里找到一些信息:Send a "304 Not Modified" for images stored in the datastore

+0

当将memcaching推荐? – jumbopap 2013-04-29 17:13:14

+2

当您使用urlfetch从数据存储或外部服务器获取数据时。 Memcache比数据存储读取速度快大约10倍。但是渲染静态模板非常快。 – 2013-04-29 17:50:09