1

こんにちは、私は学校のプロジェクトを行っています。画像を含むページがあり、MySQL データベースから取得していますが、画像のレンダリングを増やす方法は遅いですか?

どんな助けでも素晴らしいでしょう:)

マイコード

<asp:DataList ID="dlst" runat="server" DataKeyField="ProductID"  DataSourceID="SqlDataSource1" RepeatDirection="Horizontal" RepeatColumns="3" >
        <HeaderTemplate>

        </HeaderTemplate>

        <ItemTemplate>
            <asp:ImageButton ID="btnpopup" runat="server" ImageUrl='<%# "GetImage.aspx?id=" + Eval("ProductID") %>' Width="200px" Height="200px" CommandArgument='<%#Eval("ProductID") %>' CommandName="popup"   CausesValidation="false" BorderStyle="Dotted" BorderColor="WhiteSmoke" />


        </ItemTemplate>

        </asp:DataList>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:smokeshopConnectionString %>" 
            ProviderName="<%$ ConnectionStrings:smokeshopConnectionString.ProviderName %>" 
            SelectCommand="SELECT ProductID, Name, Description, ProductImage FROM products"></asp:SqlDataSource>

GetImage という 2 番目のページ

string id = Request.QueryString["id"];

        MySqlDataReader r = db.getImage(id);

        while(r.Read())
        {
            byte[] imgData = (byte[])r["ProductImage"];
            Response.BinaryWrite(imgData);
            Response.Flush();
        }
4

1 に答える 1

2
  • 画像を Web サーバーに保存し、ファイル名のみをデータベースに保存します。それは間違いなく物事をスピードアップします。

  • ブラウザは、限られた番号のみを維持します。特定のサブドメインへの接続の数と、すべての画像が同じサブドメインから返されるため、レンダリングが遅くなる理由にもなる可能性があります。画像 ID をハッシュすることにより、異なるサブドメイン (ただし、特定の画像については同じ) を使用して各画像タグを生成することを検討してください。これにより、画像のダウンロードが並列になります。例: static1.yourdomain.com/image1.jpg、static2.yourdomain.com/image2.jpg

  • サブドメインごとに dns ルックアップのオーバーヘッドが追加されるため、サブドメインを追加しすぎないようにしてください。

  • 高さと幅の属性を使用して html で画像のサイズを変更しないでください。代わりに、既に保存されている 200x200 (この場合) の画像を保持してレンダリングします。
  • サーバー上の画像の圧縮レベルを上げます (画像品質の要件によって異なります)。
于 2012-05-13T02:55:11.603 に答える