网站的优化及推广浏览模式: 标准 | 列表

[推荐]网站性能优化的几方面(三)

Posted by 欧阳振华 on 2008-10-25 16:50:38

 三、配置与部署性能优化

  1. 网站配置
    • 发布前禁用调试
      发布前记得要把Web.config 中compilation节点的debug设置为False来禁用调试.否则应用程序性能会有很大的影响.在VS2005里面新建一个网站后,在Web.config中会有这样一个节点:
      1. <!--   
      2. 设置 compilation debug="true" 将调试符号插入已编译的页面中  
      3. 。但由于这会 影响性能,因此只在开发过程中将此值 设置为 true。  
      4. -->  
      5. <compilation debug="true"></compilation> 
      在开发网站的时候设置的是True,但是在发布的时候一定要记得把它设为False.
    • 避免将错误页设置为同一个网站的某个页面.(事实上很多网站都是把错误页设置为本站的某个页面),这个设置不是很合理.以前我也不怎么觉得这有多大的关系统.但是在我前不久访问一个好友网站的时候,由于出错,它把我引向了错误页,那个错误页又是设置为自动跳转到网站首页的,所以跳到首页后出错又把我引向错误页,错误页再一次帮我跳到首页......这样就导致了恶性循环.这种情况一般不常见,但是在网站过于繁忙导致没有足够线程的时候会发生这样的异常.把错误页设置为其它网站的某个友好页面能解决这个问题.
  2. 网站部署
    • 发布前先编译.
      asp.net2.0提供了预编译机制,能避免首次访问网站编译带来的性能损失.使用IDE的发布操作能很方便地进行编译.
    • HTTP压缩.
      在IIS中配置HTTP压缩能减少30%的网络流量.对于CPU占用不高而网络带宽有限的网站来说,可以采用压缩来减少页面加载时间.

Read the rest of this article »

[推荐]网站性能优化的几方面(二)

Posted by 欧阳振华 on 2008-10-24 15:57:41

二、页面级别性能优化

  1. 页面缓存
  2. 视图状态:服务器使用视图状态来保存控件的状态,但是某些大数据量的服务控件(比如GridView) 会产生大量的ViewState代码,使得页面加载时间增加,网络负载增加.如果我们确信不需要和某个服务器进行交互(比如仅仅使用GridView呈现数据而没有删除和修改操作),就可以通过设置控件的EnableViewState属性为False来关闭控件的视图状态.甚至你可以关闭整个页面的视图状态.
    1. <%@page EnableViewState="false"%> 
    除此之外,不推荐在ViewState中保存大量数据.可能初学者一时不知道 ViewState是什么东西,那么我就以我的博客为例,先打开首页的ViewState,(因我的首页没有用到交互,所以ViewState是关闭的).打开ViewState后,我们用IE浏览器来看看网页的源代码:

    这就是滥用ViewState的结果,这些没有用的数据在浏览器之间往返,占用了大量的网络流量.而关闭页的的ViewState后,再来看页面的源代码:

    我们看到,页面就"干净"了很多. 只有一些必要的HTML代码.

Read the rest of this article »

[推荐]网站性能优化的几方面

Posted by 欧阳振华 on 2008-10-23 19:39:38

    一个刚入门的初学者开发一个网站后,能从哪些方面对系统的性能进行提升呢?

  1. 编码级别.这个是最小的级别,可能也是对性能的提升产生效果最小的.不过,我们需要特别注意一些宝贵的资源释放,往往这些错误在测试的时候不容易发现,系统一旦上线接受高访问量的考验就崩溃了.
  2. 页面级别.对于WEB系统来说,页面是一个很重要的一部分,客户端和服务端就是通过静态的HTML,JS等代码进行交互的.页面的缓存策略,页面的大小直接决定了客户端讯问网站的速度和网络流量.页面级别的性能优化比编码级别更有效一点.
  3. 构架级别.一个好的构架能提升系统性能,而构架也可能成为整个系统的杀手.对于分布式的系统更是如此.如果在一个环节发生了问题就可能导致整个系统的性能产生明显巨大的问题.
  4. 配置与部署.一个同样的系统可能在两个相同硬件配置的服务器上产生明显的性能差异.由于网站是需要IIS进行解析的,换句话说,网站所有的流量都要经过IIS这个关口,如果IIS的配置不当的话,对网站造成的影响是致命的.

    下面,我将就这几个方面介绍网站性能优化的一个具体做法,当然,方法并不是绝对的,所有方法都仅供参考.其中很多的方法我也是从一些网站性能优化的书上摘抄下来的.

一、编码级别的优化.

  1.     数据连接.
    • 尽量晚打开连接,尽量早关闭连接.
    • 优化SQL语句或者存储过程,尽量缩短查询运行时间

      下面两个连接方法就有很大的差别:

      1. SQLConnection conn=new SQLConnection(".....");  
      2. //打开连接  
      3. conn.open();  
      4. SqlCommand cmd=new SqlCommand("....",conn);  
      5. ...  
      6. ...  
      7. cmd.ExecuteNonQuery();  
      8. //关闭连接  
      9. conn.Close(); 
      1. SQLConnection conn=new SQLConnection(".....");  
      2. SqlCommand cmd=new SqlCommand("....",conn);  
      3. ...  
      4. ...  
      5. //打开连接  
      6. conn.open();  
      7. cmd.ExecuteNonQuery();  
      8. //关闭连接  
      9. conn.Close(); 

      上面的第一种方法就是过早的打开了数据连接,这样是非常消耗资源的,要像第二种方法样,在要执行查询的时候才打开连接.

  2.     数据查询
    • Select记录的时候,只返回需要的字段,不要Select * 把所有的字段都返回,数据越多对于服务器的压力就越大.对于分布式程序还会占用更多的网络流量.
    • 不要一次取出所有行,仅取出当前页面需要的数据,这就涉及到分页了.
    • 尽量使用DataReader来进行数据读取,DataReader是只读向前形式读取数据的,性能要比Dataset高.
    • 使用DataReader的时候,尽量一次返回多个记录集,需不是为每个记录打开一次数据库.
    • 如果需要在一个代码段中执行多个SQL语句,可以使用存储过程来优化性能.
  3.     释放资源
    • 使用Using来自动释放对像. 
  4.     其它优化
    • 不要依赖异常.异常是不可知的错误,
    • 使用泛型集合代替普通的集合. net2.0以上提供了很多泛型集合,使用泛型集合代替普通集合能提高性能.比如下面的代码耗时2908毫秒:
      1. ArrayList list=new ArrayList();  
      2. for(int i=0;i<10000000; i++)  
      3. list.add(i);  
      4. int count=0;  
      5. for(int i=0;i<list.Count;i++)  
      6. count=(int)list[i]; 
      改用泛型集合后代码耗时只用370毫秒
      1. List<int> list=new List<int>();  
      2. for(int i=0;i<10000000; i++)  
      3. list.add(i);  
      4. int count=0;  
      5. for(int i=0;i<list.Count;i++)  
      6. count=(int)list[i]; 
    • 不要大量使用反射,反射虽能减少项目依赖,但是会有比较大的性能损失,不推荐大量使用.

Read the rest of this article »

个人网站的常见五大弊病

Posted by 欧阳振华 on 2008-6-23 13:48:53

1、内容太杂,没有主题。

这样做,那样也做,结果弄得网站上乱七八糟,不知所云,整个一个大杂烩,这是国 内个人网站,尤其是新手的通病。这就有点象做作文,有时看着这段写得精彩,那段也有 创意,但只有真正的高手才明白必须忍痛割爱,只留下最实用的东西,保持网站的专业性和纯洁度比什么都重要。

栏目和内容多派生出的另一大难题是维护量越来越大,因为新站站长往往都是业余在 维护,所以最后越来越大的维护量会让你兴趣索然,甚至最终放弃。

一开始就要做好定位,一个网站原则上留一两项内容深入做下去就可以了,别的都要忍痛割爱,不要等到最后维护不过来了,再砍栏目。

2、广告太多

广告能赚钱,这道理大家都懂,但如果你想让你的网站将来能发展起来赚大钱,你现 在就得抵制住广告费的诱惑,尽可能地少放广告。比如短信、彩铃、点击新闻、激情注册 等,如果定要做广告,也要仔细选择与你网站相关的广告来做,以来访者可能用得上的广告为原则。

如果一定要通过网站赚点钱,我的建议是大家可以做一点百度搜索和tom(或qihoo) 的新闻,因为搜索大家能用得上,也可以丰富网站主页的功能,而新闻则是大家喜闻乐见 的内容,但点击新闻往往色图比较多,所以一定要选择好新闻类别,注意不要毁了你网站的形象。

那种对联式、弹出式、漂浮式和追随式广告一定不要弄。十分碍眼,会让你的用户迅速离开你的网站并且永不再来。

投放广告其实是一个取舍的问题。你想利用现在的人气赚点小钱还是不断吸引更多的来访者并留住老用户呢?这是个问题。


Read the rest of this article »

王通老师讲的SEO技术基础

Posted by 欧阳振华 on 2008-5-9 8:55:02

 第一部分:SEO基础 第二部分:SEO策略 第三部分:排名提高 第四部分:SEO赚钱

第一部分的内容
主要是讲影响搜索引擎排名的各种因素,以及关键点

第二部分主要是讲SEO策略
SEO策略比SEO技术还重要,能不能*SEO达到很好的营销效果,主要*SEO策略

第三部分:排名提高
网站优化好只是一个基础,要提高排名,还需要做很多工作,这一部分主要讲这方面的技巧

第四部分:SEO赚钱
如果不能够用SEO技术很好的赚钱,学了也是白学,这部分主要是和大家分享各种SEO赚钱的方法以及具体操作


Read the rest of this article »

网站优化之百度的站长建议(1)

Posted by 欧阳振华 on 2008-5-8 9:01:26

百度公布他给站长的建站指南 让我们一条一条的分析一下 

  • 给每个网页加上与正文相关的标题。如果是网站首页,则标题建议使用站点名称或者站点代表的公司/机构名称;其余内容页面,标题建议做成正文内容的提炼和概括。这可以让您的潜在用户快速的访问到您的页面。

网页标题,title,在排名中是很重要的一个参数,权重很大,确保每个网页的标题都不同。其实从用户的角度来讲,当他把同一个网站的几个窗口都最小化之后,当他再次要找到其中一个页面时,只要一看标题就可以打开所需要的网页,所以在标题里要把本页的标题放在网站名称的前面,以区分。给百度的蜘蛛一个好的页面,同时也给用户好的体验,这是王道。

  • 请不要在标题中堆积与正文无关的关键词。

这样做,会被认为在欺骗百度,欺骗搜索引擎,一旦发现,降权将是不可避免

  • 确保每个页面都可以通过一个文本链接到达。百度无法识别Flash中的链接,这些单元上的链接所指向的网页,百度就无法收录了。

文本链接在百度来看还是很重要,也是它的技术能力所限。所以即使一个页面已经有了Flash的链接,还要添加一个文本链接,以确保百度蜘蛛能够看到。


Read the rest of this article »