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

すべてが正常に動作します。画像は常に正常に読み込まれます。

しかし、本番環境でアプリをテストすると、画像の読み込みが非常に遅くなります。

ローカルホストでアプリをテストすると、開発中に画像が高速に読み込まれるため(キャッシュされた画像のように)、何が間違っているのかわかりません。

画像の読み込みが遅くなるのを防ぐにはどうすればよいですか?

4

2 に答える 2

2

大きな静的ペイロードをすばやく提供するように設計されているBlobstoreから画像を提供してみてください。dev_appserverがデータストアをメモリに保持するため、ローカルホストではおそらく高速ですが、本番環境でははるかに低速です。

于 2012-10-22T03:03:22.563 に答える
1

多くの理由が考えられます。Chrome開発ツールを使用しましたか?

しかし、賢い解決策があります。Googleはあなたのために画像を提供することができます。ほとんど無料で非常に高速です。GAEPythonイメージAPIのget_serving_urlを見てください。次に例を示します(またはhttpsなしで使用します)。

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