/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

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

2015-06-09 十有三 1 浏览:1451 网站建设运维 网站设计优化 | ASP.NET MVC

最近在思考网站要不要进行静态化的问题,在网上收集和整理了有关静态化利与弊的资料,于是写下此博文分享到网络上。由于本人是一名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的资源,服务器性能随之受到影响。在进行批量操作时,一定要考虑使用线程进行处理,千万不能阻塞网站的整体进程。

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

总结静态化的利弊

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

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

优点:

  1. 利于SEO,体现在友好的URL路径和快速的访问速度,asp.net mvc网站可以忽略URL的影响。
  2. 一个字:就是快!!!静态页面访问速度快,用户体验好,结合CDN技术、缓存和相应的架构,提速效果更加明显!
  3. 相比动态页面一定程度上减轻服务器压力

缺点:

  1. 可能需要使用大量硬盘空间
  2. 增加网站开发复杂度,不利于程序维护和管理。
  3. 不太灵活,静态化操作是需要触发开关的,不可能频繁的进行操作,可能导致数据更新慢,需要进行相应的设计。

另外这里推荐两篇有关的文章:

天猫浏览型应用的CDN静态化架构演变

谈谈网站静态化


作者:十有三

出处:https://shiyousan.com/post/635694695377061110

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: HTTP 错误 404.17 - Not Found请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
  • 下一篇: 解决OneNote安卓版同步到Windows版出现中文乱码

相关文章
  • 解决Windows虚拟主机无法设置IIS配置但需要添加MIME类型的问题
  • 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面
  • IIS8无法将不带www的顶级域名301重定向到带www的域名中
  • 奇怪的遭遇:当前网络和IP无法打开某个网站,其他网络和IP却可以访问
  • 详解IIS中URL重写工具的规则条件(Rule conditions)
  • HTTP 错误 404.17 - Not Found请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
发表评论
记住昵称

文章分类

.NET技术 122 数据库 24 Web前端 21 网站建设运维 33 操作系统与应用 67 程序猿日常 11 开发工具 11 其他随笔 12

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 道学 佛经 服务器 搞笑娱乐 好文分享 软件应用 生活知识 诗词 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • 解决IE11安装升级失败和在安装前需要更新的问题
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • jquery ajax error函数和及其参数详细说明
  • 骑马与砍杀 无限箭枝/作弊修改箭枝数量/调整各种箭枝数量的方法
  • 在唯一密钥属性“fileExtension”设置为“.”时,无法添加类型为“mimeMap”的重复集合项

推荐文章

  • 详解IIS中URL重写工具的规则条件(Rule conditions)
  • ASP.NET MVC AJAX.BeginForm异步提交和刷新无效
  • .NET 使用HttpWebRequest 伪造Request.UrlReferrer
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • MongoDB学习笔记:batchInsert is not a function

最新评论

  • 感谢脖主分享
  • 在“为click once清单签名”的右侧,可以创
  • 用的帝国cms,修改后无效啊。 缓存清理了,浏览
  • 我的需求是:分享出去是同一个网站,但是微信分享需要
  • 试了 的确 有效,只能用english的语言进行安

友情链接

  • Wil的博客
  • Passingwind的博客
  • 坤哥网
  • .NET开发者社区

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号