http://www.hnbw.cn/Html/0907/1020/43b06f47e36f361c1.htm
1. 合并脚本文件
包括脚本,样式和图片,可以有选择的把一些Js和css可以合并成一个文件,一些图片可以使用css sprites技术.这样做的原因是什么?做过web开发的人都知道,js和css基本是不变的,是静态文件,图片亦然.那么不变的文件如果适当的合并在一起,会有什么效果呢?请求的次数从多次变成了一次.这样http请求的次数就减少了.当时合并之后,文件体积变大了,会影响速度吗?答:肯定会啊,不过这里是需要权衡的,比如我100份静态文件,合并成10份还是合并成1份这就得看你得具体情况了.
2. 指定Expires或者Cache-Control,
对于静态内容:设置文件头过期时间Expires的值为“Never expire”(永不过期)
动态页面,在代码中添加cache-control,表示多少时间之后过期,如:
response.setHeader("Cache-Control", "max-age=3600");
如果使用了Expires文件头,当页面内容改变时就必须改变内容的文件名。通常是在文件内容后加版本号
这一点是大多数人都忽略得,之前很多人在坛子上发布自己得小系统,还有demo,ahuaxuan跑过去一看,my god,一堆又一堆得js,css,既没有恰当得合并,也没有设置过期时间.每次刷新页面都要重新下载这一堆又一堆的js,css.http请求那叫一个多啊.无谓了流量就这样产生了.
这一点在企业应用的系统中也时有发生.比如我们使用extjs作为前端的技术,400多k啊,每打开一个页面都导入,下载这个js,够无聊的.那么童子们可能就要问了,静态文件为啥不用apache,lighttpd等呢,答,用了又怎么样,不设expire或者max-age不是一样要下载,最好的方法是写一个filter,再filter中判断,如果url满足一定的条件(比如符合配置文件中的正则表达式),那么就设置一个max-age,这样就 ok,太简单了,几行代码就可以搞定.快哉.
3. 缓存Ajax请求
缓存的方法同动态页面,ajax请求需要使用get方式,url长度为2k(ie)限制(post请求有两个过程,1发送请求headers,2发送请求数据,根据http规范,get请求只会发送一个tcp包).--------这一段话来自yahoo,先不管其真假,我们从另外一个方面来考虑一下为什么最好使用get方式,讲一个ahuaxuan经历过的事情,之前有一个项目的ajax请求使用了post方式,后来发现经常出错,而且抛出了 squid 的错误,因为我们的网站使用了squid,问题就出在这里了,从http协议上可以了解到,method=post是指把数据提交到服务器上去,那么 squid的一个特性是不会缓存post请求(事实上它确实不应该缓存,因为这样会违反http协议中的语义),把ajax请求改成get方式之后,一切恢复如常.
4. 移除重复的js
重复的js导入也有可能导致ie重新加载该脚本.没啥好说的,照做.
5. 避免重定向
有一种经常被网页开发者忽略却往往十分浪费响应时间的跳转现象。这种现象发生在当URL本该有斜杠(/)却被忽略掉时。这时候会返回一个301的状态码, 然后浏览器重新发起一次请求.在企业应用里,重定向是我们在企业应用中常用的技术,不过用在网站项目上,您可要小心了,因为普通的重定向其实是 server在response header中设置http status=302,浏览器收到之后,判断出是302,会重新发送一个请求,目标地址是前一次返回中指定的地址.在网站项目中如果可以不用重定向就别用吧.如果您做企业应用项目,ok,关系不大,您就放心的”定”吧.
小节,ahuaxuan把减少http请求次数分为了以上5个小点,每个小点之后附加一些实例,大家可以根据这些点来判断自己的项目是否可以有优化的地方.
使用cdn
让内容更靠近用户,这有啥好说呢,原理很简单,就是根据用户浏览器所在机器的ip来判断哪些服务器离用户最近,浏览器会再次去请求这些最近的机器. 一般的 cdn服务商是通过开发自己的dns server来达到这个目的的.不过这个是通常情况哦,技术实力比较高,或者场景比较特殊的公司会开发自己的cdn.当然不管怎么说,使用cdn肯定可以使页面响应更快(也包括音频,视频,图片,文本文件,等等等等)
减小返回数据的体积
1. 使用gzip压缩返回数据
Gzip压缩所有可能的文件类型是减少文件体积增加用户体验的简单方法。比如本来400k的文件,压缩一下之后只有50k-100k,那么网络的流量就立刻下来了,压缩的代价是服务器端要压缩文件,需要消耗cpu,浏览器需要解压文件,也需要消耗cpu,不过对于现代这么nb的pc,来说,浏览器解压一下数据带来的cpu消耗简直不值一提.所以您就压吧.不过压的时候要小心哦,有的浏览器在特定场景下会出去一些小bug,导致页面不正常.比如ie6 在跨域的时候可能会有些小麻烦,把这部分数据的gzip去掉就可以了.
2. 最小化js文件和css文件
压缩js可以使用JSMin或者YUI Compressor,后者同时可以压缩css,这个也没啥好说的,照做吧.
3. 将css和js独立成外部文件
其实这一点也可以看成是区分不变数据和变化数据.很多人喜欢在页面商写很多很多的js和css,这些数据其实都是不会变化的数据,也就是说这些数据也是可以缓存在浏览器上的,通过把它们独立成外部文件,可以把这些数据缓存起来.这样做看上去是增加的请求的次数,但是由于第一次请求之后该部分数据已经被缓存,所以第二次就无需再请求后端,减少了网络带宽的开销.
优化Cookie
1. 减小cookie体积
能不放就别放吧,为啥呀,cookie就象钥匙串,只有出门和回家得时候才用,但是一整天你都要带在身上,麻烦不.
2. 合理设置Cookie域
由于二级域名可以拿到一级域名得cookie,那么如果,而二级域名之间确不能相互共享cookie,所以合理得设置cookie得域名也可以避免无必要得带宽浪费和响应速度得增加.
3. 设置合理的cookie过期时间
该过期就过期,不要让不必要的数据一直带在身上走来走去.
4. 使用域分离
为图片或者其他静态资源文件使用子域或者建立新的独立域名(申请新的域名),避免无必要的cookie传输,当然也是要在有必要得情况下,图片类网站肯定有必要,javaeye上得图片并没有使用域分离,所以我们得cookie其实会带到坛子得图片服务器上去,每次请求图片都是如此(不过还好,坛子里没有什么图片,所以这方面的浪费不大).
小结,其实cookie上得问题,单词请求看上去也不是什么大问题,好像是无所谓得事情,就那么几十个byte,至于吗,不过大家都听说过水滴石穿,绳锯木断的故事.所以该做的,我们还是要做,正所谓,勿以善小而不为,勿以恶小而为之.
优化浏览器加载
1. 将css放在页面顶部加载
把样式表放在文档底部的问题是在包括Internet Explorer在内的很多浏览器中这会中止内容的有序呈现。浏览器中止呈现是为了避免样式改变引起的页面元素重绘。用户不得不面对一个空白页面。
HTML规范清 楚指出样式表要放包含在页面的<head />区域内:“和<a />不同,<link />只能出现在文档的<head />区域内,尽管它可以多次使用它”。无论是引起白屏还是出现没有样式化的内容都不值得去尝试。最好的方案就是按照HTML规范在文档<head />内加载你的样式表。
2. 将js放在页面底部加载
脚本带来的问题就是它阻止了页面的平行下载。HTTP/1.1 规范建议,浏览器每个主机名的并行下载内容不超过两个。如果你的图片放在多个主机名上,你可以在每个并行下载中同时下载2个以上的文件。但是当下载脚本时,浏览器就不会同时下载其它文件了,即便是主机名不相同。
Js放在底部加载其实并不影响浏览器展示页面,除非用户会在js加载完成之前就调用某个js方法,比如说页面刚展现到一半,但是恰好这一半里有一部分是调用了还未下载的js,这个时候就会出问题了,如果童子们遇到这种情况,可以把这部分js先加载.
总结一下下:
以上这些优化点其实只是前端优化的部分内容,不过根据80/20原则,这些优化点已经覆盖了80%的情况了,同时前端优化其实也不是什么复杂的东西,原理上是很简单的,更多的是需要我们的实践,因为我们可能会碰到各种各样的问题,而很多的这些问题其实一般是预测不到的.只有遇到过才知道.
分享到:
相关推荐
在IT行业中,"Web前台"通常指的是用户与网站或应用程序交互的部分,包括用户能看到和操作的所有界面元素。这部分是Web开发的重要组成部分,因为它是用户与系统接触的第一道关卡,直接影响用户体验。以下将深入探讨...
【web前台及jsp教程】是针对初学者设计的一套学习资源,旨在帮助用户掌握Web前端开发和JavaServer Pages(JSP)技术,以及如何通过Servlet处理后台数据。本教程覆盖了从基础到进阶的多个关键知识点,为构建动态、...
“web前台开发”则明确指出考试内容主要集中在网页的用户界面和交互部分。 【文件内容】"腾讯笔试题测试"可能是包含这次笔试中Web前端题目及源代码的文件。这份文件可能会包含以下几个方面: 1. HTML结构设计:...
《Web前台技术大系》是一套全面覆盖Web前端开发核心工具的教程,其中包括Photoshop CS3、Flash CS3和Dreamweaver CS3三款软件的深入讲解,旨在帮助初学者和有经验的开发者掌握从设计构思到实际网页制作的全过程。...
《Web前台技术大系丛书-Flash CS3网站商业设计从入门到精通》是一本全面介绍使用Adobe Flash CS3进行网站商业设计的专业书籍。该书旨在帮助读者从零基础开始,逐步掌握Flash的各项功能,最终能够运用Flash进行高效、...
《网站设计指南:通过Dreamweaver CS3学习HTML+DIV+CSS》是Web前台设计大系丛书中的一部,旨在帮助读者掌握网页设计的核心技术。本教程通过一系列PPT教学,详细介绍了从基础到进阶的网站设计知识,涵盖了HTML、DIV、...
网站前台和后台界面是构建任何在线平台不可或缺的两个核心部分,尤其在PHP网站开发中更是如此。PHP是一种广泛使用的服务器端脚本语言,特别适合于Web开发,能够创建动态交互式网页。在这个话题中,我们将深入探讨...
### WEB前台技术_3_JavaScript.pdf 知识点概览 #### 一、JavaScript简介 **1.1 JavaScript简介** - **定义**: JavaScript是一种基于对象的脚本语言,其代码以纯文本形式存储,由浏览器解释执行。 - **特点**: ...
5. **性能优化**:为了提升加载速度和用户体验,前端工程师会关注图片压缩、代码压缩、CDN(内容分发网络)的使用、懒加载策略等性能优化技巧。 6. **SEO优化**:对于电商网站,搜索引擎优化(SEO)非常重要。前端...
### Web开发技巧:控制光标位置与优化前端页面展示 #### 一、光标自动定位到最后 在Web开发中,有时我们需要实现一个功能,即当用户聚焦到某个输入框时,光标会自动跳转到最后的位置。这可以提高用户体验,减少...
- 对于开发者,可以研究源码中的设计模式、数据库交互策略以及前端优化技巧。 这个压缩包包含的"MF00344-MVC4企业门户源码"很可能是整个项目的源代码文件,可能包括CSHTML视图文件、C#控制器代码、数据库模型、...
6. **网页性能优化**:在前台设计中,性能是不可忽视的一环。通过压缩CSS和JavaScript文件,减少HTTP请求,使用CDN(内容分发网络)等方法,可以提升网页加载速度,提供更好的用户体验。 7. **响应式设计**:随着...
通过阅读《Apress.Pro.Android.Web.Apps.Feb.2011.pdf》这本书,开发者将全面了解Android Web应用开发的各个环节,包括基本概念、实践技巧以及最佳实践,从而能够开发出高效、用户友好的移动Web应用。同时,Readme....
网站前台模版是构建网页和用户交互界面的重要组成部分,它为网页设计师和开发者提供了预设的布局、颜色方案、字体样式以及元素排列方式,极大地提高了工作效率。这些模版通常包括HTML、CSS、JavaScript等前端技术,...
小程序通常由JSON配置文件、WXML(微信小程序标签语言)、WXSS(微信小程序样式语言)和JavaScript组成,其开发框架基于JavaScript,但进行了特定的封装和优化,以便适应微信环境。 【H5页面与微信小程序的关系】 ...
它们可能涵盖了从基础到进阶的各种话题,包括jQuery的最佳实践、性能优化技巧、调试方法以及代码重构策略。阅读这些资料将有助于前端开发者提升技能,写出更高质量的代码,从而为用户提供更好的交互体验。 总的来说...
本资料包“仿网易云音乐_微信小程序模板js代码前台前端H5页面源码.rar”提供了一个独特的学习资源,它不仅包含了微信小程序的模板代码,还有对应的H5页面源码,让我们可以深入理解并实践如何构建一个类似网易云音乐...
本资源包含“一些(许多)前台页面的集合”,这意味着它提供了多种不同设计风格和功能的前端页面示例,适用于各种类型的网站。这些页面可能是网页设计师们在其他网站上通过积分或者其他方式获取的,旨在为用户提供...
本资源"yuneng-HongHuaShuiLiXiaoChengXu-master_微信小程序模板js代码前台前端H5页面源码.zip"提供了丰富的微信小程序开发模板和JavaScript(js)代码,以及与之配套的H5页面源码,旨在帮助开发者快速构建高效、...