googleappenginepython:从数据库查询中检索到的图像在生产中加载缓慢

2024-10-01 13:39:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个应用程序,用户可以从磁盘上传图像。那个形象 只要用户登录,应用程序的每一页都会显示。在

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

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

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

^{pr2}$

这是相应的处理程序类:

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()

一切正常。图像总是成功加载。在

但当我在生产中测试我的应用程序时,图像加载速度非常慢,逐渐增加。在

因为我不知道在本地应用程序中加载了什么。在

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


Tags: 用户图像imageselfsrcid应用程序img
2条回答

尝试从Blobstore服务您的图像,这是为快速处理大型静态负载而设计的。它在本地主机上可能很快,因为dev_appserver将数据存储保存在内存中,但在生产环境中,速度要慢得多。在

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

但有一个聪明的解决办法。谷歌可以为你提供图片。几乎免费而且非常快。看看GAE Python图像API的get_serving_url。 下面是一个示例(或者不使用https):

https://lh6.ggpht.com/lOghqU2JrYk8M-Aoio8WjMM6mstgZcTP0VzJk79HteVLhnwZy0kqbgVGQZYP8YsoqVNzsu0EBysX16qMJe7H2BsOAr4j=s70

相关问题 更多 >