最近在思考网站要不要进行静态化的问题,在网上收集和整理了有关静态化利与弊的资料,于是写下此博文分享到网络上。由于本人是一名asp.net开发人员,所以本文的观点可能无法涉及到全部方面,但是比较注重于使用ASP.NET所开发的网站,毕竟网站开发技术种类繁多,并且各有特点。下面会从多个方面对网站静态的利与弊进行分析。

  PS:博文中不包含相关静态化实现方法的内容,只对ASP.NET网站静态化的优点与缺点进行思考和分析。

  从搜索引擎优化的角度考虑

  根据网上的资料来看,网站静态化考虑最多的就是SEO了,事实上静态页面确实十分有利于搜索引擎蜘蛛的抓取,另外早期的ASP.NET Web Form网站对于SEO则不是太友好。

  PS:SEO(搜索引擎优化)的重要性,这里就不再多加叙述,这可是提高网站流量的重要手段!

  那么为什么静态化会有利于SEO呢?这里主要从URL进行分析,对于搜索引擎蜘蛛来说,动态的URL往往是十分不友好的,虽然现在搜素引擎的技术已经可以抓取到动态页面的内容,但是相比静态URL简短、美观、稳定的性质,动态URL地址中过多且复杂的参数会使蜘蛛难以理解和区分。

  动态页面本身是依靠传入的参数来查询显示数据库的内容,对于引擎蜘蛛来说,相同名称的.aspx页面都是同一个页面,不同的只是参数,搜索引擎只能根据这些复杂的参数来判断URL是否为不同的页面,所以动态URL对于搜素引擎来说是十分不友好的。

  而静态页面则不同,由于静态页面的URL对应的是服务器上页面所在的磁盘路径,搜索引擎很容易区分和理解页面的地址,而且静态URL一般也不会带有复杂的参数。

  对于ASP.NET Web Form网站来说,如果只是想优化URL,那么倒是可以考虑使用伪静态的方法。幸运的是,对于使用ASP.NET MVC开发的网站来说,就没有这个烦恼了,ASP.NET MVC的路由机制就为我们提供了对seo十分友好的URL,甚至可以考虑不对网站进行静态化操作。

  另外静态页面访问的速度比动态页面快,从SEO的角度来看是十分有利的。毕竟对于搜索引擎蜘蛛,如果一个页面响应速度慢并且经常打不开,那么就等于释放出两个信号:1、网站用户体验不好。2、网站内容很难抓取。这样会对网站排名造成极大的负面影响。

  从网站服务器压力和访问速度考虑

  这里先从访问速度进行对比,静态页面的访问速度确实比动态页面快,毕竟静态页面只需从硬盘读取页面文件就可以将内容呈现给用户,而动态页面比如asp.net网站一般还需要经过程序处理相关的业务逻辑,以及从数据库中读取数据才能渲染页面并呈现出来,一定程度上会拖慢页面的访问速度。在遇到高强度访问压力的时候,静态页面快速和稳定的优势将会完全体现出来。

  这里再从服务器资源角度来看,对于站长来说服务器配置越好所需的费用越高,那么静态化的网站在服务器资源方面又是如何呢?这么说吧,静态页面消耗硬盘的资源较多,一般在磁盘空间容量方面,主要是大量的页面文件和分级文件夹。另外静态页面在生成时候,对于硬盘的IO读写操作和CPU消耗也是十分巨大的,特别是遇到有大量的页面要进行静态化的时候,CPU运算和IO操作将会更加显著的降低服务器性能。

  而ASP.NET这类的动态网站一般比较消耗服务器的内存资源,这里需要开发人员注意对网站进行优化,尽量避免将大量数据保存至会话中,以及在使用缓存方面也需要额外注意。另外有些动态网站对CPU使用率也是十分高的,比如一些提供图片处理的服务网站。此外需要对数据库进行大量增删改操作的动态网站,对服务器压力非常的大,例如最常见的论坛类网站(WEB2.0),甚至有的服务器商在出租服务器时,会有额外的提示服务器可承受的压力数据。

  总体来说,静态化后的网站确实有利于降低服务器压力。在生成静态页面时所造成的服务器性能影响,是可以通过一定的手段进行优化。另外大家也可以了解下CDN技术,即内容分发网络,对于静态页面来说,一旦使用了这个技术,外加上浏览器缓存,那么用户访问网站的响应速度就像火箭一样快!访问速度快了,从另一个角度来看又是有利于搜索引擎对网站内容的抓取。

  从技术角度分析

  作为一个ASP.NET开发人员,曾经在对网站进行静态化的时候遇到过许多问题。首先从网站程序的复杂度进行分析,一个具有静态化功能的网站必是非常复杂的,因为静态化一个网站要考虑的技术性问题十分多(这里不包括伪静态)。

  进行静态操作的时候,不仅要考虑到单个页面的操作,还需要注意整体与单个之间的复杂关联,有种牵一发而动全身的压迫。就拿最常见的上一页和下一页来说,如果当前网站的某一篇文章删除了,那么这篇文章对应的上下页就必须要重新进行静态化,否则链接的地址将会出现404。简单的页面尚且如此,更别说那些大型的网站了,每个页面中超级复杂的关系就够喝一壶了。

  再从进行静态操作的时机来看,一般开发人员要实现相应的触发开关功能,用于判断是否要进行静态化操作,以及要进行什么样的静态化操作。是局部还是整体?静态页面文件是否存在?静态页面的数据是否过期?这些问题都说明了生成的时机是很重要的,否则会造成用户看到的数据不是最新的内容。

  此外静态化操作对服务器性能的影响也是煎熬开发人员的难题之一,我们不可能频繁的进行静态化操作,对磁盘的IO操作以及大量的逻辑处理都会消耗大量CPU的资源,服务器性能随之受到影响。在进行批量操作时,一定要考虑使用线程进行处理,千万不能阻塞网站的整体进程。

  老实话,对于网站开发者来说,静态功能也许是一个头疼的问题,开发难度加大了,同时维护难度和管理难度也通用加大,在网站备份的时候还得考虑是否要备份这些静态文件!特别是大型的网站,静态化往往需要进行复杂的架构设计!

  总结ASP.NET静态化的利弊

  是否是需要静态化,还是得看整体的需求,俗话说只有最适合自己的才是最好的(有点废话的赶脚 ^^)。

  一般来说一些不经常更新内容的页面就可以考虑进行静态操作,比如新闻页面,小说的章节页面,毕竟这些内容一旦发布了,就很少会进行改动。而且可以使用CDN技术进行加速。

  优点:

  1、利于SEO,体现在友好的URL路径和快速的访问速度,asp.net mvc网站可以忽略URL的影响。

  2、一个字:就是快!!!静态页面访问速度快,用户体验好,结合CDN技术、缓存和相应的架构,提速效果更加明显!

  3、相比动态页面一定程度上减轻服务器压力

  缺点:

  1、可能需要使用大量硬盘空间

  2、增加网站开发复杂度,不利于程序维护和管理。

  3、不太灵活,静态化操作是需要触发开关的,不可能频繁的进行操作,可能导致数据更新慢,需要进行相应的设计。

网页静态化的实现方法:

利用ResultFilter实现asp.net mvc 页面静态化

思考ASP.NET网站静态化的利与弊的更多相关文章

  1. 关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)

    本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部,不过该企业把这个事业部里的人事成本,系统运维成本特别 ...

  2. 关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)

    网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...

  3. 【转】关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)

    本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部,不过该企业把这个事业部里的人事成本,系统运维成本特别 ...

  4. 【转】关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)

    网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...

  5. 关于大型网站技术演进的思考(十三)--网站静态化处理—CSI(5)

    讲完了SSI,ESI,下面就要讲讲CSI了 ,CSI是浏览器端的动静整合方案,当我文章发表后有朋友就问我,CSI技术是不是就是通过ajax来加载数据啊,我当时的回答只是说你的理解有点片面,那么到底什么 ...

  6. 【转】关于大型网站技术演进的思考(十三)--网站静态化处理—CSI(5)

    讲完了SSI,ESI,下面就要讲讲CSI了 ,CSI是浏览器端的动静整合方案,当我文章发表后有朋友就问我,CSI技术是不是就是通过ajax来加载数据啊,我当时的回答只是说你的理解有点片面,那么到底什么 ...

  7. 网站静态化处理—web前端优化—下【终篇】(13)

    网站静态化处理—web前端优化—下[终篇](13) 本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部, ...

  8. 网站静态化处理—web前端优化—中(12)

    网站静态化处理—web前端优化—中(12) Web前端很多优化原则都是从如何提升网络通讯效率的角度提出的,但是这些原则使用的时候还是有很多陷阱在里面,如果我们不能深入理解这些优化原则背后所隐藏的技术原 ...

  9. 网站静态化处理—web前端优化—上

    网站静态化处理—web前端优化—上(11) 网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是 ...

随机推荐

  1. 1 秒杀系统模拟基础实现,使用DB实现

    本文根据动脑学院的一节类似的课程,改编实现.分别使用DB和redis来完成. 隔离的解释 业务隔离:将秒杀业务独立出来,尽量不与其他业务关联,以减少对其他业务的依赖性.譬如秒杀业务只保留用户id,商品 ...

  2. php session在高并发时可能存在的问题。

    如果同一个客户端并发发送多个请求,而每个请求都使用了Session,那么PHP Session锁的存在会导致服务器串行响应这些请求,而不是并行.这是因为在默认情况下,PHP使用文件存储Session数 ...

  3. 当导用模块与包的import与from的问题(模块与包的调用)

    当在views.py里写impor models会不会报错呢? 1.Python里面的py文件都是每一行的代码. 2.Python解释器去找一个模块的时候,只去sys.path的路径里找 3.djan ...

  4. I.MX6 U-Boot ping网络

    /********************************************************************* * I.MX6 U-Boot ping网络 * 说明: * ...

  5. 【spring源码学习】spring的远程调用实现源码分析

    [一]spring的远程调用提供的基础类 (1)org.springframework.remoting.support.RemotingSupport ===>spring提供实现的远程调用客 ...

  6. PHP使用curl请求https站点的常见错误及解决方案

    使用curl请求http站点和https站点最大的不同就是https站点有证书验证这一环节,如果证书验证不通过则无法发起请求,不管是请求什么类型的站点遇到问题时先把错误码打印出来看一下,打印错误码的代 ...

  7. debezium 数据变更工具使用

    1.  作用 简单概述就是CDC(change data capture),实时数据分析领域用的比较多   2. 简单使用(基于官网的docker 说明)  备注: 测试没有使用守护进程模式为了方便测 ...

  8. wordpress改不了固定连接的解决办法

    经常遇到更改了固定连接刷新没效果>>>>>>>废话不多说直接上步骤,有图有真相. 1,ftp删除根目录的这个文件夹 2,进入wp后台设置-固定连接—自定义结构 ...

  9. laravel 中使用定时任务

    Laravel5.3 Artisan Console 文档地址 http://laravelacademy.org/post/6228.html 1.在服务器上查看定时任务有哪些crontab -e ...

  10. Win10的Hosts文件修改后无法保存的问题解决方法,实测可以

    1.hosts文件是什么?有什么作用呢? Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个 ...