探讨高访问量网站优化方案(从图片角度) 【转】

非常感谢园友们对我的观点提出这么多好的意见,本人全部收下。重申下,本文的主旨在于探讨WEB服务器优化方案,本人并不是系统的分析,只是从其中的一个角度来说明下本人的想法。优化是个非常有学问的功课,并不是一朝一夕就能取得真经的。这篇为了不误导朋友,我特意更改了文章的标题,加上了"(从图片角度)".我建议化整为零来学习强化。 
  
   本人对文件上传这块做的比较多,为些针对不同客户不同的需求总结了几种实用的上传文件方式,希望能和大家分享.

   我们知道现在一个好的网站都面临着访问量的问题.高访问量的网站服务器的压力大概来自以下两个方面:
   第一:数据库,大量的数据查询操作必定会消耗大部分时间.
   第二:WEB服务器本身,大量的图片以及js文件的加载 . 

   这里我针对第二项说下大多网站在(图片处理方面)可能进行的优化操作.个人意见:)

   我们可以把网站在所在的图片统一放在一台单独的服务器中,这里本人叫做图片服务器吧.程序中的图片全部链接到图片服务器中.问题是有很多的图片并不是一开始就存在的,大多都是通过后台的添加,修改上传上去的,比如说新闻图片什么的.而asp.net的上传组件只能把图片上传到程序相应的服务器上.这里我们可以利用.net下面的FtpWebRequest类来实现FTP的功能,通过它可能实现类似FTP软件的相关功能,起码有上传和下载,这样就可能轻松的实现图片
与程序的完全分离了.
   
  程序如下:
   这个方法主要是接收一个客户端文件流通过连接FTP服务器来实现文件的上传.

Code

      这个方法实现文件的上传之间的各种判断操作以及最后调用上传方法进行上传:
    
Code

     这个方法是检测上传的路径是否存在,不存在则创建.

    
Code

      这种FTP上传形式是把客户端的文件原文不动的传了上去,如果用户手上只有数码图片呢?而数码图片默认一般都在2M以上,一般的用户他们都不会对图片进行优化处理,如果是上传原图片的话,这样起码有两个问题:
      第一:在上传速度上成问题;
      第二:在网页加载的时候也会太慢.所以我们想将原图片进行缩放处理后只上传处理后的小图片而不用上传原始图片.

     程序如下:

   
Code

     

    
      主要的原理其实特别简单,就是通过上传组件来得到一个客户端文件流,然后通过这个文件流得到一个Image对象,System.Drawing.Image img = System.Drawing.Image.FromStream(_fileStram);
      Bitmap 构造函数 (Image, Int32, Int32) :
      从指定的现有图像(缩放到指定大小)初始化 Bitmap 类的新实例。

     参数 original
     类型:System.Drawing.Image
    从中创建新 Bitmap 的 Image。

    width
    类型:System..::.Int32
    
新 Bitmap 的宽度(以像素为单位)。

     height
     类型:System..::.Int32
   
 新 Bitmap 的高度(以像素为单位)。

     通过Bitmap类的构造函数,可以等到一个经过缩放后的位图对象,最后通过位图对象来将文件进行保存.本人对Image..::.GetThumbnailImage这个方法进行了实验,发现这种方式生成的小图会出现失真的情况.

     注:
       以上观点纯属本人意见,如有缺陷请大家指教.
      本人对WEB程序优化特别感兴趣,望同样对这方面有兴趣的朋友多多发表些意见及经验.

posted on 2008-09-01 16:24  草原和大树  阅读(469)  评论(4编辑  收藏  举报