2009-07-29 15 views
0

フォームごとに50回以上呼び出しているためです。どのように私はクライアント側で画像をキャッシュすることができます。キャッシュからの動的生成画像

リフレッシュごとに、データベースが呼び出され、ヒットします。

<%@ WebHandler Language="C#" %> 

using System; 
using System.Web; 
using System.Data.SqlClient; 
using App_Code.BLL.Products; 

public class ProductPicture : IHttpHandler 
{ 
    private Product _objProducts; 
    private ProductBL _objProductBL; 

    #region IHttpHandler Members 

    public void ProcessRequest(HttpContext context) 
    { 
     string strSize = context.Request.QueryString["PhotoType"]; 
     _objProducts = new Product(); 
     _objProductBL = new ProductBL(); 

     _objProducts.PictureID = Convert.ToInt32(context.Request.QueryString["PhotoId"]); 
     SqlDataReader objReaderPhoto = _objProductBL.GetPictureByPictureID(_objProducts); 
     if (!objReaderPhoto.HasRows) return; 
     objReaderPhoto.Read(); 
     context.Response.ContentType = "Image/JPEG"; //Convert.ToString(objReaderPhoto["Photograph"]); 
     context.Response.AddHeader("Content-Disposition", "attachment; filename=Image"); 
     switch (strSize) 
     { 
      case "m": 
       context.Response.BinaryWrite((byte[])objReaderPhoto["PictureBinary"]); 
       break; 
      //case "s": 
      // context.Response.BinaryWrite((byte[]) objReaderPhoto["PhotoSearch"]); 
      // break; 
      case "t": 
       context.Response.BinaryWrite((byte[])objReaderPhoto["PictureThumbnail"]); 
       break; 
      default: 
       context.Response.BinaryWrite((byte[])objReaderPhoto["PictureBinary"]); 
       break; 
     } 

     context.Response.Cache.SetLastModified(DateTime.Now.AddYears(-1)); 

     objReaderPhoto.Close(); 
    } 

    public bool IsReusable { 
     get { 
      return false; 
     } 
    } 

    #endregion 
} 

答えて

2

私はそれが何のHttpContextキャッシュに結果をキャッシュに関するURL「のimg/someimage.gif」を、持っていない限り、あなたはクライアント側でそれをキャッシュすることができるとは思いませんか?少し助けてCache

関連する問題