首页 > 代码库 > 关于网站的优化
关于网站的优化
网站优化:
是因为IIS的连接数的是有限的,所以
1、减少HTTP连接
1 尽量将同一个逻辑的css代码放到一个css文件中
2 尽量将同一个逻辑的js代码放到一个js文件中
3 尽量将小图片合并成一个大图,利用css中的backgroud-postinion : x,y去截取大图上的具体的小图 (优化以后性能是最好)
如何将小图拼成大图:
http://www.cnblogs.com/ivanyb/archive/2013/01/10/2854366.html 中有一个工具
只需要将小图片打包成.zip 上传到服务器,自动的生成大图,并且生成大图中的每个小图的css代码
4 使用 CDN 加速将静态资源全局缓存到CDN服务商的服务器上,将来浏览器请求一个静态资源(图片,.css,.js,.html,.htm),则直接去CDN的服务器获取而不去
web服务器了
CDN的使用:
1、去CDN服务商购买服务
2、CDN就会将服务器上的指定的静态资源下载回去,同时设定缓存时间
3、当缓存失效以后,重新回源
4、也可以提供url进行手工删除
5、CName:给某个域名做一个别名
A记录:将域名www.xx.com绑定到外网ip上 212.198.9.2
cname:将当前域名 s1.xx.cdndomain.com cname到www.xx.com
2、减少每次http请求响应回去的数据量大小
1、尽量压缩js,css文件的大小 ,所以一般使用的是 .min.js .min.css
可以使用
http://www.cnblogs.com/ivanyb/archive/2013/01/10/2854366.html中的说明一步步操作即可完成
2、开启IIS中的压缩功能,默认是zip压缩,浏览器得到以后自动解压缩
上面的2个优化过程不需要修改任何代码。
3、页面缓存
在aspx页面上 <@ outputcache %>
4、数据缓存
将不常变化的数据缓存到服务器
失效策略:
1、相对过期时间
2、绝对过期时间
3、文件依赖
4、数据库依赖
asp.net中HttpRuntime.cache缓存,此缓存为当前网站的进程内部的
第三方缓存软件:memcached ,redis
本质上是利用key-value进行数据存储的,可以使用当前服务器上的所有内存
他们支持分布式缓存
5、页面真静态化 .html 可以做CDN缓存
要求:当前页面的变化不大
6、开启IIS的处理进程 web园
web园:一个网站的应用程序池的工作进程数>1
开启web园引发的问题:
1、多个进程不能共享session对象
如何解决:
1、利用进程外,
1、状态服务器,本质上是是window服务,使用的内存更大,但是当超过了内存数的时候一样的重启,导致不稳定,读写速度很快
2、数据库:本质上是将session数据存储在硬盘上,读写速度慢,但是很稳定(一般使用此种访问,因为系统的健壮性比效率更加重要)
2、利用cookie + redis(memcached)来模拟session的功能
2、如果系统使用的是HttpRunTime.cache(进程内的缓存) 会引发内存不够用的问题,以及在多个进程中不能共享缓存数据
如何解决:使用 redis(memcached) 在单独的缓存服务器上运行
7、增加web服务器
必须使用LINUX+ NGINX 进行负载均衡
引发什么问题?
1、多个进程不能共享session对象
2、如果系统使用的是HttpRunTime.cache(进程内的缓存) 会引发内存不够用的问题,以及在多个进程中不能共享缓存数据
3、文件上传以后不能在各个服务器上共享
解决方案:使用文件服务器来共享
如何从web服务器将文件保存到文件服务器磁盘:
一般使用FTP ,可以满足大文件的稳定传输
也可以使用System.Net.WebClient中的Update() 有参数 (缺点不稳定,随时都会断开)
第一个:路径 (可以是文件服务器的共享路径 格式:\\文件服务器名称\存储文件的文件夹名称)
第二个:保存的数据
断点续传
1K ->Byte[]
断点下载
8、优化数据库
加索引
分表
分库
读写分离
Nosql:Mongodb
关于网站的优化