网站优化--让你的网页飞起来
2011-09-26 17:13
246 查看
摘要:
网站快要上线了,但是网站打开速度很慢怎么办?这里介绍一下对网页进行优化的方法和技巧,加快网页浏览速度,让网页速度飞起来
测试网页性能工具
⑴PageSpeed:是开源Firefox/Firebug插件。网站管理员和网络开发人员可以使用PageSpeed来评估他们网页的性能,并获得有关如何改进性能的建议。
⑵yslow:
YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化。
安装方法:
安装:直接在firefox组件查找,安装即可使用方法:
1)这里是如何解释的颜色代码分数:
·高优先级。这些建议代表了最大的潜在的性能赢得。你应该首先解决这些项目。
·中等优先级。这些建议可能代表较小的胜或更多的工作来实现。您应该解决这些项目的未来。
·工作罚款或低优先级。如果显示建议,作为与“+”号表示,他们很可能代表未成年人胜。您应该只关注这些项目后,你处理的优先级较高的的。
·只有信息的消息。无论这些项目不适用此页或有一个问题,在运行测试。
关于它的使用更详细的资料参考:
2)
视图显示了等级为网页的成绩单。整个字母等级为页面显示在顶部随着全面数值的表现。这个页面是基于22可分级的高性能网页的规则(见性能规则)。这些规则是列在按重要性的顺序,从最重要不重要。从A级到F级,A级为最高。更详细的使用方法参考:
网站性能最佳惯例和规则
网站优化的原则是什么呢?这里推荐雅虎的23条网站优化军规雅虎的卓越性能团队已经确定了23个军规:
1.减少HTTP请求次数
2.使用CDN
就近缓存==>智能路由==>负载均衡==>WSA全站动态加速
3.避免空的src和href
当link标签的href属性为空、script标签的src属性为空的时候,浏览器渲染的时候会把当前页面的URL作为它们的属性值,从而把页面的内容加载进来作为它们的值。
4.为文件头指定Expires
使内容具有缓存性。避免了接下来的页面访问中不必要的HTTP请求。
5.使用gzip压缩内容
压缩任何一个文本类型的响应,包括XML和JSON,都是值得的。
6.把CSS放到顶部
7.把JS放到底部
防止js加载对之后资源造成阻塞。
8.避免使用CSS表达式
9.将CSS和JS放到外部文件中
目的是缓存,但有时候为了减少请求,也会直接写到页面里,需根据PV和IP的比例权衡。
10.权衡DNS查找次数
减少主机名可以节省响应时间。但同时,需要注意,减少主机会减少页面中并行下载的数量。
用户的图片下载速度就会受到影响。所以新浪会搞N个二级域名来放图片。
11.精简CSS和JS
12.避免跳转
同域:注意避免反斜杠“/”的跳转;
跨域:使用
13.删除重复的JS和CSS
重复调用脚本,除了增加额外的HTTP请求外,多次运算也会浪费时间。在IE和Firefox中不管脚本是否可缓存,它们都存在重复运算JavaScript的问题。
14.配置ETags
它用来判断浏览器缓存里的元素是否和原来服务器上的一致。比last-modifieddate更具有弹性,例如某个文件在1秒内修改了10次,Etag可以综合Inode(文件的索引节点(inode)数),MTime(修改时间)和Size来精准的进行判断,避开UNIX记录MTime只能精确到秒的问题。服务器集群使用,可取后两个参数。
15.可缓存的AJAX
“异步”并不意味着“即时”:Ajax并不能保证用户不会在等待异步的JavaScript和XML响应上花费时间。
16.使用GET来完成AJAX请求
当使用XMLHttpRequest时,浏览器中的POST方法是一个“两步走”的过程:首先发送文件头,然后才发送数据。因此使用GET获取数据时更加有意义。
17.减少DOM元素数量
是否存在一个是更贴切的标签可以使用?人生不仅仅是
18.避免404
有些站点把404错误响应页面改为“你是不是要找***”,这虽然改进了用户体验但是同样也会浪费服务器资源(如数据库等)。最糟糕的情况是指向外部JavaScript的链接出现问题并返回404代码。首先,这种加载会破坏并行加载;其次浏览器会把试图在返回的404响应内容中找到可能有用的部分当作JavaScript代码来执行。
19.减少Cookie的大小
20.使用无cookie的域
比如图片CSS等,Yahoo!的静态文件都在yimg.com上,客户端请求静态文件的时候,减少了Cookie的反复传输对主域名(yahoo.com)的影响。
21.不要使用滤镜
png24的在IE6半透明那种东西,别乱使,淡定的切成PNG8+jpg
22.不要在HTML中缩放图片
23.缩小favicon.ico并缓存
影响我的网站速度的因素
测试几个主网页总结出影响我的网页速度的几个因素:
一级因素:
①启动压缩②浏览器缓存
二级因素:
①提供压缩后的图片
找到原因下面就好办了,对症下药,下面将一个个解决。
解决办法:
开启压缩功能----gzip技术:文本页面(htm/css/js)启用gzip压缩后,一般可以压缩70%左右.在apache2.x版本以上,需开启Deflate模块。事实上,Apache2.x系列已经内置了这这个模块,因此,只需要安装时打开即可:当然当时编译的时候没有打开,现在单独编译这个两个模块:mod_deflate模块
编译mod_deflate模块
1 | cd /root/httpd-2.2.3/modules/filters |
2 |
3 | /usr/ local /apache/bin/apxs -i-a-cmod_deflate.c//编译 |
4 |
5 | /usr/ local /apache/bin/apachectl restart//重启apche |
编辑httpd.conf
添加下面这段话:
<ifmodulemod_deflate.c>
AddOutputFilterByTypeDEFLATEtext/htmltext/plaintext/cssapplication/x-httpd-phpapplication/x-javascript
DeflateCompressionLevel9
SetOutputFilterDEFLATE
#DeflateFilterNoteInputinstream
#DeflateFilterNoteOutputoutstream
#DeflateFilterNoteRatioratio
#LogFormat'"%r"%{outstream}n/%{instream}n(%{ratio}n%%)'deflate
#CustomLoglogs/deflate_log.logdeflate
</ifmodule>
第一句:是支持压缩的文件格式
第二句:是压缩的等级,这里是最高等级
第三句:对所有站点进行压缩
更加详细的学习可以参考apache的官方手册:
测试gzip安装是否成功:
下面二个测试网站,可以测试是否使用了gzip
2.开启浏览器缓存:
phpheader函数-----网页的缓存
这里使用php的header函数实现网页缓存
01 | //开启浏览器缓存 |
02 |
03 | if (( $src_uri = realpath ( $_GET [ "uri" ] |
04 |
05 | /* Thefiledoesnotexist*/ |
06 |
07 | header( "HTTP/1.1 404NotFound" ); |
08 |
09 | echo ( "<html><body><h1>HTTP 404-NotFound</h1></body></html>" ); |
10 |
11 | exit ; |
12 |
13 | } |
14 |
15 | /* |
16 |
17 | * SettheHTTPresponseheadersthatwill |
18 |
19 | * telltheclienttocachetheresource. |
20 |
21 | */ |
22 |
23 | $file_last_modified = filemtime ( $src_uri ); |
24 |
25 | header( "Last-Modified: " . date ( "r" , $file_last_modified ) ); |
26 |
27 | $max_age = 7*24*60*60; // 7days |
28 |
29 | $expires = $file_last_modified + $max_age ; |
30 |
31 | header( "Expires: " . date ( "r" , $expires ) ); |
32 |
33 | $etag = dechex ( $file_last_modified ); |
34 |
35 | header( "ETag: " . $etag ); |
36 |
37 | $cache_control = "must-revalidate, . $max_age . ", s-maxage=" . $max_age ; |
38 |
39 | header( "Cache-Control: " . $cache_control ); |
1 | ************************************** |
1 | 部分解释: |
1 | Last-Modified:浏览器第一次访问的标识符,作为以后是否访问过的一个重要标志 |
1 | Etag:关于web资源的一个标识符,如断点下载,作为以后是否访问过的标志 |
1 | Cache-Control:指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。 |
1 | 请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only- if -cached, |
1 | 响应消息中的指令包括 public 、 private 、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。 |
1 | 各个消息中的指令含义如下: |
1 | 这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 |
1 | 在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 |
1 | min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。 |
1 | 如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息 |
1 | 更加详细的学习可以参考:<a href= " > |
由于php的header函数只能缓存网页中的文本,但是图像,css,js资源等不能缓存,这里使用mod_expires模块对图片资源进行缓存
官方对mod_expires的说明;
这个模块控制服务器应答时的
Expires头内容和
Cache-Control头的
max-age指令。有效期(expirationdate)可以设置为相对于源文件的最后修改时刻或者客户端的访问时刻。
这些HTTP头向客户端表明了文档的有效性和持久性。如果有缓存,文档就可以从缓存(除已经过期)而不是从服务器读取。接着,客户端考察缓存中的副本,看看是否过期或者失效,以决定是否必须从服务器获得更新,官方手册:
编译mod_expires模块:
Cd/root/httpd-2.2.3/modules/metadata
/usr/local/apache/bin/apxs-i-a-cmod_expires.c//编译
编辑httpd.conf配置:添加下面内容
<IfModulemod_expires.c>
ExpiresActiveon
ExpiresDefault"accessplus1month"
ExpiresByTypetext/html"accessplus1months"
ExpiresByTypetext/css"accessplus1months"
ExpiresByTypeimage/gif"accessplus1months"
ExpiresByTypeimage/jpeg"accessplus1months"
ExpiresByTypeimage/jpg"accessplus1months"
ExpiresByTypeimage/png"accessplus1months"
EXpiresByTypeapplication/x-shockwave-flash"accessplus1months"
EXpiresByTypeapplication/x-javascript"accessplus1months"
ExpiresByTypevideo/x-flv"accessplus1months"
</IfModule>
解释:第一句--开启服务
第二句--默认时间是一个月
在下面是关于各种类型的资源的缓存时间设置
====================================
另外还有一种使用:mod_cache的缓存方式,这个不仅支持http本地缓存,还支持hhtp代理缓存,
使用方法:
编译mod_cache,mod_mem_cache,mod_disk_cache模块
Cd/root/httpd-2.2.3/modules/cache
/usr/local/apache/bin/apxs-i-a-cmod_cache.ccache_util.ccache_cache.ccache_storage.ccache_pqueue.ccache_hash.c//编译
/usr/local/apache/bin/apxs-i-a-cmod_mem_cache.c//编译
/usr/local/apache/bin/apxs-i-a-cmod_disk_cache.c//编译
编辑httpd.conf文件
添加:
<IfModulemod_cache.c>
#内存缓存
<IfModulemod_mem_cache.c>
CacheEnablemem/usr/local/apache/htdocs/Mobile/share
MCacheSize4096
MCacheRemovalAlgorithmLRU
MCacheMaxObjectCount100
MCacheMinObjectSize1
MCacheMaxObjectSize2048
CacheMaxExpire864000
CacheDefaultExpire86400
#CacheDisable/php
</IfModule>
#硬盘缓存
<IfModulemod_disk_cache.c>
CacheRoot/home/zhangy/cachetest
#CacheSize256
CacheEnabledisk/
CacheDirLevels4
#CacheMaxFileSize64000
#CacheMinFileSize1
#CacheGcDaily23:59
CacheDirLength3
</IfModule>
</IfModule>
/usr/local/apache/bin/apachectlrestart//重启apche
关于参数说明和更多的学习参考:
3.提供压缩后图片
对图片进行缩放处理以及其他效果处理,
这里不使用GD类库,使用ImageMagick来实现图片的压缩等等功能
之前我写过一篇文章:《
--------------------------------------------------------------------------------------
完成上面几部,这次打开自己的网站看看,是不是飞起来了呢。。。。。。。。。。。
相关文章推荐
- 网站优化--让你的网页飞起来
- 网站优化--让你的网页飞起来
- 网站优化--让你的网页飞起来
- 网站优化--让你的网页飞起来
- 雅虎十四条:网站前端网页优化的14条原则
- [大型网站优化技术] -- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片
- IE浏览器下同一网页多图片显示的瓶颈与优化(转载,网站图片方面优化一篇堪称经典的文章)
- 网页跳转方法,对于网站优化和搜索引擎排名的影响
- DIV+CSS布局的网页对网站优化的影响
- 雅虎十四条:网站前端网页优化的14条原则
- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
- 雅虎十四条:网站前端网页优化的14条原则
- 移动网站性能优化:网页加载技术概览
- 雅虎十四条:网站前端网页优化的14条原则
- 网页速度很慢优化方案:如何提高网页加载速度,提升网站加载速度
- 网站建设优化 Ptengine网页热图姿势这么多,轻松做洞察,流量变用户!
- 手机网站优化,百度MIP网页加速
- 广州网络营销师吴家成教你网站网页标题title优化设置
- 移动网站性能优化:网页加载技术概览
- 13网站优化技巧,能够提高您的产品的网页排名