Asp.net azure云环境中的图像管理
因此,我有一个asp.NETWebForms应用程序,它在每个页面中都有许多图像要显示。上载时,这些图像将存储到数据库中。在移动到云计算之前,我经常检查文件系统是否存在图像,如果是,我获取图像并显示它,否则我会在文件系统中创建图像,然后使用它。现在我想将这个应用程序移动到云上,并实现类似的逻辑,唯一的区别是我保存到azure blob存储帐户并从那里获取图像,而不是文件系统。下面给出的代码用于从blob存储器上载和获取图像Asp.net azure云环境中的图像管理,asp.net,azure,azure-storage-blobs,Asp.net,Azure,Azure Storage Blobs,因此,我有一个asp.NETWebForms应用程序,它在每个页面中都有许多图像要显示。上载时,这些图像将存储到数据库中。在移动到云计算之前,我经常检查文件系统是否存在图像,如果是,我获取图像并显示它,否则我会在文件系统中创建图像,然后使用它。现在我想将这个应用程序移动到云上,并实现类似的逻辑,唯一的区别是我保存到azure blob存储帐户并从那里获取图像,而不是文件系统。下面给出的代码用于从blob存储器上载和获取图像 CloudBlobContainer BlobCon
CloudBlobContainer BlobContainer = Img.GetCloudBlobContainer();
CloudBlockBlob blob = BlobContainer.GetBlockBlobReference(picture_id + "_HighRes.Jpeg");
var blobs = BlobContainer.ListBlobs(picture_id + "_HighRes.Jpeg");
if (blobs.Count()>0)
{
foreach (var i in blobs)
{
Picture_name = i.Uri.ToString();
}
}
else
{
SqlConnection Db_Con = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_connection"].ToString());
DataSet ds_pic = new DataSet();
Db_Con.Open();
SqlDataAdapter sd_pic = new SqlDataAdapter("select PictureBinary FROM Picture where Id=" + pic_id, Db_Con);
sd_pic.Fill(ds_pic);
Db_Con.Close();
byte[] picbin = (byte[])ds_pic.Tables[0].Rows[0][0];
ImageConverter ic = new ImageConverter();
System.Drawing.Image img = (System.Drawing.Image)ic.ConvertFrom(picbin);
//img.Save(HttpContext.Current.Server.MapPath(imagePath + picture_id + ".Jpeg"), System.Drawing.Imaging.ImageFormat.Jpeg);
System.Drawing.Image img4 = null;
// VariousQuality(img, picture_id, 200, "_HighRes.Jpeg");
// Picture_name = imagePath + picture_id + "_HighRes.Jpeg";
BlobContainer = Img.GetCloudBlobContainer();
blob = BlobContainer.GetBlockBlobReference(picture_id + "_HighRes.Jpeg");
blob.UploadFromStream(new MemoryStream(picbin));
blobs = BlobContainer.ListBlobs(picture_id + "_HighRes.Jpeg");
foreach (var i in blobs)
{
Picture_name = i.Uri.ToString();
}
return Picture_name;
现在这是可行的,但正如你所想象的,这个网站相当慢。有没有更好的方法来处理云中的图像对于图像,最好的选择是使用Azure CDN,尽管它将使用相同的存储和blob容器,但它的扩展性很好,因为图像现在来自blob的静态url,现在会有一个图像的并行连接,所以我很确定fetch看起来会非常快,因为它与其他内容并行,基本上所有静态内容,如图像、JavaScript、css,如果可以保存在不同的域中,浏览器可以在每个域中进行多个并行连接,因此,页面加载速度更快 将Azure CDN用于图像-
调整网页提示-有许多可能的方法 我会列出我的一些建议
5.访问数据库时使用参数化查询以防止SQL注入