4

このトピックについて Google 検索を何度も行いましたが、何も見つかりませんでした (AppEngine が「resp.setHeader("transfer-encoding", xxxx)」への呼び出しを無視することを確認する以外は)。

私の問題は、完了するまでに少し時間がかかるサーバー プロセスがあることです (平均 3 秒以下) が、連続したストリームで結果を生成します (つまり、最初のデータ オブジェクトはわずか 10 ミリ秒後に準備が整います)。

現在、サーバーは応答をバッファリングしてから、クライアントに表示するためにすべてを吐き出します。これは機能しますが、ユーザーは最初の結果を確認する前にプロセス全体が完了するのを待たなければならないため、優れたユーザーエクスペリエンスではありません...

チャンク転送を使用すると、最初の応答をクライアントにすぐに送信できるため(そして、後続のデータが利用可能になるとすぐにストリーミングできるため)、これが解決されると思います。

私の問題は、チャンク転送を有効にする方法がわからないことです。

チャンク転送とアプリ エンジンをグーグル検索すると、ほとんどの場合、ブロブストアからのチャンク転送を無効にしたい人からの投稿、またはチャンク転送がデフォルトで有効になっているという投稿が表示されます。ただし、これまでの私のテストでは、少なくとも私のアプリケーションでは、これは正しくないことが示されています。

同様に、非アプリ エンジンの参照では、'transfer-encoding' コンテンツ ヘッダーの設定について説明されていますが、これは AppEngine では明示的に無視されています (少なくとも、python docs によると、Java 側では何も見つかりませんでした。明示的に、しかし私がテストしたときも機能しませんでした)。

最後に、respose オブジェクトのフラッシュ、応答ライターの取得とフラッシュ、応答出力ストリームの取得とフラッシュなどを既に試しましたが、違いはありませんでした。

だから - 私の質問は: チャンク転送を有効にするにはどうすればよいですか?

4

1 に答える 1

5

Appengine は、応答のストリーミングをサポートしていません。応答全体を一度に返す必要があります。

App Engine は、クライアントへのデータ送信、アプリケーションでさらに計算を実行してからさらにデータを送信することをサポートしていません。つまり、App Engine は、単一のリクエストに対する「ストリーミング」データをサポートしていません。

レスポンス Javaを参照

于 2011-03-11T13:01:05.723 に答える