欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

思考ASP.NET网站静态化的利与弊

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

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

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

思考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、不太灵活,静态化操作是需要触发开关的,不可能频繁的进行操作,可能导致数据更新慢,需要进行相应的设计。

相关标签: tag静态化