0

我有一个应用程序,用户可以在其中从磁盘上传图像。只要用户登录,该图像就会显示在应用程序的每个页面中。

这是将图像加载到页面的模板部分:

{% if currentService.image %}
    <img src='img?img_id={{ currentService.key() }}'></img>
{% else %}
    <img src='static/no_image.jpeg' />
{% endif %}

这就是我在控制器中进行重定向的方式:

def main():
    app = webapp2.WSGIApplication([
                                   ('/img', ImageHandler),
                                   ('/.*', MainPage)
                                   ],debug=True)
    wsgiref.handlers.CGIHandler().run(app)

这是相应的处理程序类:

class ImageHandler(webapp2.RequestHandler):
    def get(self):
        try:
            rsRequest = db.get(self.request.get("img_id"))
            if rsRequest.image:
                self.response.headers['Content-Type'] = "image/png"
                self.response.out.write(str(rsRequest.image))
            else:
                self.response.out.write("No Image")
        except:
            tb = traceback.format_exc()
            ErrorLog(descripcion = str(tb)).put()
            self.doRender('error_page.html', {'mensaje':tb})

这是模型类:

class Service(db.Model):
    name = db.StringProperty(required = True)
    image = db.BlobProperty()

一切正常。图像始终加载成功。

但是当我在生产中测试我的应用程序时,图像加载速度非常缓慢,而且是渐进式的。

我不知道我做错了什么,因为当我在 localhost 中测试应用程序时,图像加载速度很快(如缓存图像)。

我应该怎么做才能避免缓慢的图像加载?

4

2 回答 2

2

尝试从Blobstore提供图像,它旨在快速提供大型静态有效负载。它在本地主机上可能很快,因为 dev_appserver 将数据存储保存在内存中,但在生产中它要慢得多。

于 2012-10-22T03:03:22.563 回答
1

可能有很多原因。你用过chrome开发者工具吗?

但是有一个聪明的解决方案。Google 可以为您提供图片。几乎免费而且速度非常快。查看 GAE Python 图像 API 的 get_serving_url。这是一个示例(或在没有 https 的情况下使用它):

https://lh6.ggpht.com/lOghqU2JrYk8M-Aoio8WjMM6mstgZcTP0VzJk79HteVLhnwZy0kqbgVGQZYP8YsoqVNzsu0EBysX16qMJe7H2BsOAr4j=s70
于 2012-10-21T22:02:33.220 回答