0

私のxhtmlには次のものがあります:

...
<img src="myImage.jpg" />
...

そして私は次のようにレンダリングします:

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(XMLResource.load(in).getDocument(), url);
renderer.layout();
renderer.createPDF(out);

結果のPDFは期待どおりですが、画像(xhtmlに1回だけ含まれ、1回だけレンダリングされる)が4回要求されていることに気付きました。

さて、余分なデータのダウンロードという明らかな問題を除けば、これはほとんどの人にとって実際には問題にはなりません.

ただし、動的画像の「使用時に期限切れ」の画像キャッシュを実装する必要があり、これは本当に頭痛の種になっています...

空飛ぶ円盤が一度だけレンダリングするのに、なぜ画像に対して4つのリクエストを行う必要があるのですか?

4

2 に答える 2

0

私はちょうどコードを調べましたが、ここには解決策がありません (itext と空飛ぶ円盤を書き直す必要はありません)。

ストリームを初めて開いたときは、ストリームを開くことができるかどうかをテストするだけで、データは読み取られません。

2 回目は itext がヘッダーを読み取ってファイルの種類を判別するためのもので、最初の 4 バイトのみが読み取られます。

3 回目は、画像のサイズを決定する itext です。よくわかりませんが、ヘッダー以外はあまり読まれていないと思います。

最後の読み取りは、画像をレンダリングすることです。

したがって、ダウンロードの影響は大きくありません。4 つの URL 接続 - はい、ただし、ストリーム全体は 1 回しか転送されません

私の「使用時に期限切れ」キャッシュは、代わりに「4回目の使用時に期限切れ」にする必要があります。

于 2010-07-30T08:14:43.383 に答える