网站前端性能优化总结【转】

news/2024/5/20 20:39:44/文章来源:https://blog.csdn.net/weixin_30809333/article/details/99842081

一、服务器侧优化

1添加 Expires 或 Cache-Control 信息头 

某些经常使用到、并且不会经常做改动的图片(banner、logo等等)、静态文件(登录首页、说明文档等)可以设置较长的有效期 (expiration date),这些HTTP头向客户端表明了文档的有效性和持久性。如果有缓存,文档就可以从缓存(除已经过期)而不是从服务器读取。接着,客户端考察缓存 中的副本,看看是否过期或者失效,以决定是否必须从服务器获得更新。

各个容器都有针对的方案,,以 Apache 为例:

ExpiresActive On
ExpiresByType image/gif
" access plus 1 weeks "

表示gif文件缓存一周,配置可以根据具体的业务进行调整,具体配置可以参考:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_expires.html

2压缩内容 

对于绝大多数站点,这都是必要的一步,能有效减轻网络流量压力。

<ifmodule mod_deflate.c>
DeflateCompressionLevel
9
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE html htm xml php css js
</ifmodule>

表示zlib在压缩时可以最大程度的使用内存,压缩html、文本、xml和php这几种类型的文件,指定扩展名为html、htm、xml、php、css和js的文件启用压缩。

具体配置可以参考:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_deflate.html

3. 设置 Etags 

在使用etags之前,有必要复习一下 RFC2068 中规定的返回值 200 和 304 的含义:

200 --OK
304 --Not Modified

客户端在请求一份文件的时候,服务端会检查客户端是否存在该文件,如果客户端不存在该文件,则下载该文件并返回200;如果客户端存在该文件并且该文件在规定期限内没有被修改(InodeMTimeSize,则服务端只返回一个304,并不返回资源内容,客户端将会使用之前的缓存文件。而etags就是判断该文件是否被修改的记号,与服务器端的资源一一关联,所以etags对于CGI类型的页面缓存尤其有用。

下图是优化前的首页:(注意,此时没有压缩首页图片,即使使用了缓存,仍需要5s左右的时间)

化前的某页面

需要注意的是,使用etags会增加服务器端的负载,在实际应用中需要自行平衡。

二、Cookie优化

1. 减小Cookie体积
HTTP coockie可以用于权限验证和个性化身份等多种用途。coockie内的有关信息是通过HTTP文件头来在web服务器和浏览器之间进行交流的。因此保持coockie尽可能的小以减少用户的响应时间十分重要。

使cookie体积尽量小;

在合适的子域名上设置bookie,以免影响其他子域名下的响应;

设置合理的过期时间,去掉不必要的cookie。

下面对比一下各个网站的cookie:

图中可以看出,6K的cookie显然是不必要的。

2. 对于页面内容使用无coockie域名

当浏览器在请求中同时请求一张静态的图片和发送coockie时,服务器对于这些coockie不会做任何地使用。因此它们只是因为某些负面因素而创建的网络传输。所以你应该确定对于静态内容的请求是无coockie的请求。创建一个子域名并用他来存放所有静态内容。

例如,域名是www.example.org,则可以考虑可以在static.example.org上存在静态内容。但是,如果不是在 www.example.org上而是在顶级域名example.org设置了coockie,那么所有对于static.example.org的请求 都包含coockie。在这种情况下,可以考虑重新购买一个新的域名来存在静态内容,并且要保持这个域名是无coockie的。例如,t.qq.com使 用的是qpic.cn,weibo.com使用的是sinaimg.cn,xiaonei.com使用的是hdn.xnimg.cn等等。

性能方面的考虑还有使用带有www的子域名并且在它上面设置coockie,因为忽略www会把cookie设置到*.example.com上去,使cookie带有一些不必要的信息。

三、JAVA SCRIPT 和 CSS 优化

1. 把 CSS 放到代码页上端 

这么做可以避免浏览器在解释一次之后,使用css进行第二次解释,因为用户对css裸奔日效果根本就不感兴趣。

css裸奔节效果图(来源:网络)

2. 避免 CSS 表达式 

凡是只有IE能用的东西,都不是好东西。

3. 从页面中剥离 JavaScript 与 CSS

剥离后,能够有针对性的对其进行单独的处理策略,比如压缩或者缓存策略。

(css已经剥离,但js嵌入到html里面了,并且放在了html的上部,所以这货是正面+反面教材)

4. 精简 JavaScript 与 CSS

语法能简写话尽量简写。

(相同表现的类合并)

5. 使用 <link> 而不是 @importChoose <link> over @import

在 IE 中 @import 指令等同于把 link 标记写在 HTML 的底部,这与第一条相违背。

6. 避免使用CSS Filter

尽量使用png格式的图片来代替滤镜效果,因为开启滤镜会加大浏览器的开销。 

7. JS尽量放到页面最下端

当一个脚本在下载的时候,浏览器会卡住,无法响应其他请求。所以,可以将功能性的JS放到最后端去处理。

8页面展现尽量交给CSS完成

曾经见过一个JS+CSS写出来的下拉框,如图:

实现原理是JS获取页面的每一个select元素和其对应的属性,然后用js重新画出新的样式效果:

多出的这部分JS执行过程会降低客户端的性能,所以最终没有采用这个select样式。

四、图片优化

1. 优化图片 

尽可能的使用 PNG 格式的图片,因为和GIF相比,PNG有更多的功能和更小的体积,而且未来PNG会加入动画效果:

2. 使用 CSS Sprites 对图片优化 

简单的说就是"利用 CSS background 相关元素进行背景图绝对定位",把多次HTTP 调用变为一次调用:

这些表情在鼠标没有经过的时候,都是从一张图片上绝对定位出来的,只有在鼠标放到某一张表情上时,才会从服务器上下载gif图片,这样可以减少(N-1)次HTTP请求。

使用 CSS Sprites 的不足之处是客户端将消耗更多内存,因为CSS Sprites 会打开多个图片的副本,目前的解决办法是按照使用频率不同,合并成几个级别的图片,分批次下载并在客户端展示。

3. 不要在 HTML 中缩放图片 

用 ImageMagic 命令(convert )就能将图片缩放成合适的尺寸,所以尽量不要交给浏览器去执行。

4. 用更小的并且可缓存的 favicon.ico

原因是没有favicon.ico,服务器会返回一个404,与可以长时间缓存的文件相比,大量的404会增加服务器的响应数量。

(服务器上因为缺少favicon.ico而产生的404错误)

4. 压缩图片不一定是有损的 

对已有图片进行压缩并不对影响用户体验,主要基于以下两点:

1. 用户未必会感觉到色彩的损失;

2. 压缩不一定会损坏图片的质量。

无损压缩图片的原理可以参考下面的链接,本文不再赘述:http://en.wikipedia.org/wiki/Image_compression

最初测试平台首页使用的是未压缩过的图片,下载速度明显受拖延,有时会达到将近十秒钟左右的下载时间,在经过无损压缩首页图片之后,提升效果效果很明显,基本控制在了一秒钟之内:

下图是压缩前后的大小对比:

该工具地址为:http://www.smushit.com/ ,强烈推荐使用。

五、内容优化

1. 减少 DNS 查找

DNS lookup 是很耗费时间的步骤,网站上如果过多的使用了站外的 Widget ,DNS 查找带来的问题是不容忽视的。

2. 尽量减少重定向

并且注意一些不必要的重定向,比如对 Web 站点子目录的后面添加个 "/" ,就能有效避免一次重定向。对于服务器来说,请求http://example.com/fml 与请求 http://example.com/fml/  是有差异的。如果是 Apache 服务器,可以通过配置mod_rewrite解决这个问题。具体请参考:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html

3. 切分组件到多个域

主要的目的是提高页面组件并行下载能力,但注意,也不要同时使用过多的域名,否则就会出现第一条DNS lookup过多的问题,一般情况下两个域名就可以了。

4. 杜绝 http 404 错误

对页面链接的充分测试加上对 Web 服务器 error 日志的不断跟踪可以有效减少 404 错误,并提升用户体验。

后记:

这次总结给我带来的启发并不在于提升系统性能性能本身,提升性能只是一个很表面上的东西,网上的方法有很多,测试的方法也有很多,照着都做一遍,性能确实会有所提升,但是这种知其然而不知其所以然的性能提升是没有意义的,这便是本文的目的所在。

转载于:https://www.cnblogs.com/lyanm/p/3712598.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_805815.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提高 网站 百度权重

2019独角兽企业重金招聘Python工程师标准>>> 很多的企业都存在这样的困惑&#xff1a;一个网站做了很久&#xff0c;不仅只在百度等搜索引擎检索到很少的网页&#xff0c;而且网站的PR值和百度权重很低或者几乎没有。存在这样的问题&#xff0c;究其原因在于没有重视…

最全的静态网站生成器(开源项目)

原文地址&#xff1a; http://www.iteye.com/magazines/133-Static-Site-Generators#595将动态网页静态化&#xff0c;可以有效减轻服务器端的压力&#xff0c;并且静态网页的访问速度要快于动态网页。此外&#xff0c;使用静态网页还有利于搜索引擎的收录&#xff0c;从而提高…

JavaScript网站设计实践(二)实现导航栏当前所选页面的菜单项高亮显示

一、&#xff08;一&#xff09;中的代码还可以修改的地方。 在&#xff08;一&#xff09;中&#xff0c;如果是运行在服务器下&#xff0c;如apache等&#xff0c;可以把head和navigation的div抽取出来&#xff0c;放置在另一个html文件里&#xff0c;然后在页面中&#xff0…

Web安全 DDoS攻击.(让网站无法正常地提供服务.)

DDoS攻击的概括 分布式拒绝服务 (英文意思是Distributed Denial of Service&#xff0c;简称DDoS) 是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击&#xff0c;或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击.&#xff08;消耗目…

网络安全 社会工程学--钓鱼网站的制作和利用(让你了解整个钓鱼网站 背后的秘密.)

钓鱼网站的概括 顾名思义钓鱼网站&#xff0c;就是愿者上钩的网站一般的这些网站都是有鱼饵。一般都是贪图小便宜的人才会损失很大&#xff0c;所以在我们进行网购的时候&#xff0c;一定要仔细识别网站平台的真假。不能因为便宜就轻易相信并交易。而这些钓鱼网站即使做的再惟…

Web安全 BurpSuite渗透常用工具.(包含:截包分析,暴力破解,修改包数据,扫描网站等很多功能)

BurpSuite概括 BurpSuite是一款集成化的渗透测试工具&#xff0c;用起来也很简单、方便。包含了很多功能&#xff08;包含&#xff1a;截包分析&#xff0c;暴力破解&#xff0c;修改包数据&#xff0c;扫描网站等很多功能&#xff09;&#xff0c;用得最多的应该是开代理截包…

Day27-Http实现客户端登录网站案例

文章目录&#x1f4e2;题目&#x1f4e2;效果图&#x1f431;‍&#x1f680;一、开发主页面MainActivity&#x1f3af;1.编写主页布局activity_main.xml&#x1f3af;2.编写主页MainActivity.java&#x1f431;‍&#x1f680;二、开发LoginOkActivity页面&#x1f3af;1.编写…

前端的第二十六天(初识AJAX、客户端和服务器、网络相关概念、通信协议、服务器环境的安装、网站、PHP基础语法)

一、初识AJAX 1.url地址 展示网页 、提供数据 2.异步刷新 避免整个界面刷新&#xff0c;加载更快、省流量 3.同步刷新 不影响当前界面现有的操作 二、客户端与服务器 一般情况下服务器的硬件配置都要高一些&#xff0c;因为访问量大的话容易宕机。 像淘宝双11的时候&a…

微软发布IIS漏洞补丁,影响我国五分之一网站

2015年4月14日&#xff0c;微软发布月度例行安全公告&#xff0c;共释放出11项更新&#xff0c;一举修复包括Windows操作系统、IE浏览器、Office办公软件、.NET Framework、Server软件、Office Services和Web Apps在内的26个安全漏洞。在这11项更新中&#xff0c;有4项更新综合…

荷露叮咚wp建站系列视频课程2.wordpress安装

偶们中国人的网站&#xff0c;当然是下载中文版的啦&#xff0c;官方最新的通常是英文版的&#xff0c;当然我们也是有专门的团队会第一时间汉化的&#xff0c;你只需下载其安装文件即可。&#xff08;下载安装主要是为了学习了调试主题或插件&#xff0c;如果直接配置可用的网…

html新手常见错误,五个常见的SEO错误:新手SEO都会遇到的问题!

进入搜索引擎优化领域&#xff0c;门槛其实并不高&#xff0c;基础性的知识就那么多&#xff0c;但有个小问题是&#xff0c;很多SEO教程对部分内容解释并不详尽&#xff0c;容易造成很多错误的观念&#xff0c;特别是对于SEO初学者而言&#xff0c;正确的理解SEO基础知识很重要…

Java查问题网站,JAVA线上故障排查套路

线上故障主要会包括cpu、磁盘、内存以及网络问题&#xff0c;而大多数故障可能会包含不止一个层面的问题&#xff0c;所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的&#xff0c;基本上出问题就是df、free、top 三连&#x…

从腾讯视频看大数据与网站运营

2015年大数据可谓炙手可热&#xff0c;大到政府服务&#xff0c;小到个人生活&#xff0c;无一不深受大数据影响。各行各业也都试图在大数据的指引下找寻新的方向&#xff0c;作为与社会潮流趋势脱不开轨的广大站长们&#xff0c;一定也在为大数据与网站运营相结合而绞尽脑汁。…

网站文件下载链接

如何将网站上的文件让别人下载呢&#xff1f; 最简单的方式就是直接把文件的链接地址放到页面上&#xff0c;如一个a链接&#xff0c;点击该链接直接访问文件&#xff0c;即会下载。 经过测试&#xff0c;不提供文件地址&#xff0c;访问一个servlet&#xff0c;返回该文件地址…

细谈Joomla建站之旅----我的启示录

2019独角兽企业重金招聘Python工程师标准>>> 欢迎来到Joomla建站之旅。 介绍一个自由免费的优秀建站软件Joomla&#xff0c;以及怎样自行管理用Joomla所构建的网站。当然顺带着我们也会在网站的规划和建设上给读者一些非常给力的建议。 为了方便大家认识Joomla&am…

使用git提交部署静态网站

15 本地网站上传 git gitee git软件可以将我们的本地网站提交上传到远程仓库&#xff08;码云gitee里面&#xff09; 码云就是远程仓库&#xff0c;类似于服务器。 15.1 使用方法 下载安装git 如果第一次用git&#xff0c;要先配置好全局选项 git config --global user.na…

阿里云部署Java网站和微信开发调试心得技巧(上)

阿里云部署Java网站和微信开发调试心得技巧&#xff08;上&#xff09;本篇手记旨在帮助大家从0开始&#xff1a; 申请阿里云服务器搭建出程序的执行环境在服务器上发布并运行自己的web project域名解析微信测试号的申请与连接以获取微信用户信息全篇文章主要以如何去完成目标为…

美参议院已启用全网站HTPPs加密

美国参议员的网站&#xff0c;近日悄然发生了一个变化。当你在访问的时候&#xff0c;可能会留意到浏览器地址栏会显示一个绿色的锁状图标 —— 没错&#xff0c;其已经加强了整个网站域名的安全性。现在&#xff0c;百余名参议员的网站&#xff0c;都已经默认启用 HTTPs 加密通…

使用 Hexo 创建项目文档网站

当我们发布一个开源项目的时候&#xff0c;最重要的事情之一就是要创建项目文档。对使用项目的用户来说&#xff0c;文档是非常有必要的&#xff0c;通常我们可以使用下面这些方式来创建文档&#xff1a; GitHub Wiki&#xff1a;在 Github 上我们可以为每个项目都创建一个 wik…

三级目录怎么做html,Laravel 实现前台网站三级目录

友情提示&#xff1a;此篇文章大约需要阅读 6分钟24秒&#xff0c;不足之处请多指教&#xff0c;感谢您的阅读。效果展示PS&#xff1a;由于是模仿联想电商前台&#xff0c;前端代码借鉴官网代码。联想商城三级目录数据库设计CREATE TABLE dzushop_types (id int(10) unsigned …