思考ASP.NET网站静态化的利与弊
最近在思考网站要不要进行静态化的问题,在网上收集和整理了有关静态化利与弊的资料,于是写下此博文分享到网络上。由于本人是一名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网站静态化的利与弊的更多相关文章
- 关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)
本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部,不过该企业把这个事业部里的人事成本,系统运维成本特别 ...
- 关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)
网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...
- 【转】关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)
本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部,不过该企业把这个事业部里的人事成本,系统运维成本特别 ...
- 【转】关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)
网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...
- 关于大型网站技术演进的思考(十三)--网站静态化处理—CSI(5)
讲完了SSI,ESI,下面就要讲讲CSI了 ,CSI是浏览器端的动静整合方案,当我文章发表后有朋友就问我,CSI技术是不是就是通过ajax来加载数据啊,我当时的回答只是说你的理解有点片面,那么到底什么 ...
- 【转】关于大型网站技术演进的思考(十三)--网站静态化处理—CSI(5)
讲完了SSI,ESI,下面就要讲讲CSI了 ,CSI是浏览器端的动静整合方案,当我文章发表后有朋友就问我,CSI技术是不是就是通过ajax来加载数据啊,我当时的回答只是说你的理解有点片面,那么到底什么 ...
- 网站静态化处理—web前端优化—下【终篇】(13)
网站静态化处理—web前端优化—下[终篇](13) 本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部, ...
- 网站静态化处理—web前端优化—中(12)
网站静态化处理—web前端优化—中(12) Web前端很多优化原则都是从如何提升网络通讯效率的角度提出的,但是这些原则使用的时候还是有很多陷阱在里面,如果我们不能深入理解这些优化原则背后所隐藏的技术原 ...
- 网站静态化处理—web前端优化—上
网站静态化处理—web前端优化—上(11) 网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是 ...
随机推荐
- AS3舞台的大小,可视区域大小及SWF文件的原始尺寸大小
AS3舞台的大小,可视区域大小及SWF文件的原始尺寸大小三者之间没有什么关系. 当前可视区域:stage.stageWidth,stage.stageHeight.SWF文件编译后的原始尺寸大小:lo ...
- Nodejs实现爬虫抓取数据
开始之前请先确保自己安装了Node.js环境,还没有安装的的童鞋请自行百度安装教程...... 1.在项目文件夹安装两个必须的依赖包 npm install superagent --save-dev ...
- [QT][转载] Qt信号和槽
From: http://blog.csdn.net/rl529014/article/details/51346955 GUI 程序除了要绘制控件,还要响应系统和用户事件,例如重绘.绘制完成.点击鼠 ...
- Lumen实现用户注册登录认证
Lumen实现用户注册登录认证 前言 Lumen是一个基于Laravel的微框架,号称是以速度为生.截用Lumen官网的一段,号称是比silex和slim还要快. 本文将用Lumen来实现一个完整的用 ...
- 【ACM非算法部分】STL汇总
stackqueuepriority_queuemapsetpair ====================================== stack:(栈) 包含:#include<s ...
- IDEA Intellij中vim插件使用小技巧
在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考.当然 ...
- 剑指offer-第六章面试中的各项能力(翻转单词的顺序VS左旋转字符串)
//题目1:翻转单词顺序例如“Hello world!”翻转后为world! Hello. //思路:首先翻转整个字符串,然后再分别翻转每个单词. //题目2:左旋转字符串,是将字符串的前面几个(n) ...
- Oracle与Mysql操作表序列
一.Oracle添加表序列 CREATE SEQUENCE name -- 序列名 INCREMENT BY -- 每次加几个 START WITH -- 从几开始计数 MINVALUE --- 最小 ...
- Android的移动存储解决方案之SharedPreferences
搞Android有一段时间了,但是并没写过有关Android的博客,今天给大家介绍一下SharedPreferences. 使用SharedPreferences保存key-value对的步骤如 ...
- (转)IE=EmulateIE7 标签的作用
本文转载自:http://www.cnblogs.com/0000/archive/2009/11/01/1593851.html 对于 Web 开发人员来说,文本兼容性是一个要考虑的重要问题.Win ...