まず、実際に私はこのためIHTTPハンドラの過負荷を好むと思います(画像用に別の.aspxファイルを持っていますが、原理はサムのようimageData
があなたのイメージである
Response.BinaryWrite(imageData);
Response.ContentType = "image/gif";
eと一度に1つの新しい概念を導入しましょう)。
.aspxファイルはコードビハインドから継承され、内容はありません。だから、それは<%@ Page %>
の指示文を持っていて、それ以外のものはありません。
コードビハインドでは、ページロードイベントハンドラでイメージを取得し、応答のコンテンツタイプを適切な値に設定します(たとえば、すべてのイメージがimage/pngの場合、ちょうどハードコード)。次に、イメージを出力に書き込みます。
TestDBDataContext context1 = new TestDBDataContext();
int id;
if(int.TryParse(Request.QueryString["id"], out id))
{
var r = (from a in context1.ImageTables where a.Id == 8 select a).FirstOrDefault();
if(r != null)
{
Response.ContentType = r.ContentType;
Response.BinaryWrite(r.FileImage.ToArray());
return;
}
}
//code to handle 404 not found for no such image here (send error message or Server.Transfer to error page, etc.
その後、等<img src="profileImg.aspx?id=8" alt="" />
でこれを使用することができ
性能向上がデータベースから一度にバイトに4kのチャンクを取得しなくメモリ内の1つの巨大なアレイよりも、Response.OutputStream
に書き込むことです。小さなファイルの場合、その違いは重要ではありませんが、非常に大きなファイルの場合、かなりの量になる可能性があります(「今すぐWebサーバーが繰り返し使用されていません」など)。
wudは毎回ポストバックを作成します。 –
いいえ、POST経由でデータが返送されることはありません。 –
ありがとう、これは私が探していたものです! –