我有一个应用程序,用户可以从磁盘上传图像。那个形象 只要用户被记录,它就会显示在应用程序的每个页面中。
这是将图像加载到页面的模板部分:
{% 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中测试应用程序时,由于图像在开发中加载速度很快(如缓存图像),我不知道自己做错了什么。
我应该怎么做才能避免图像加载速度慢?
答案 0 :(得分:2)
尝试从Blobstore提供图片,该图片旨在快速提供大型静态有效负载。它可能在您的本地主机上很快,因为dev_appserver将数据存储保留在内存中,但在生产中它会慢得多。
答案 1 :(得分:1)
可能有很多原因。你使用过chrome开发工具吗?
但是有一个聪明的解决方案。 Google可以为您提供图片。几乎免费且非常快。查看GAE Python图像API的get_serving_url。 这是一个例子(或没有https使用它):
https://lh6.ggpht.com/lOghqU2JrYk8M-Aoio8WjMM6mstgZcTP0VzJk79HteVLhnwZy0kqbgVGQZYP8YsoqVNzsu0EBysX16qMJe7H2BsOAr4j=s70