`
awfwxf
  • 浏览: 68497 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

B/S前端优化

阅读更多
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先加载.
分享到:
评论

相关推荐

    Web应用前端性能优化浅析

    对于不断发展的Web应用,性能优化如同逆水行舟,不进则退。...本文侧重通过对前端性能的分析,为Web站点前端性能优化提供了理论依据和一般的优化策略,并讲述了一些用于B/S系统前端性能优化的常见规则和有效方法。

    基于java在线音乐系统的毕业设计,基于B/S结构和JSP技术,采用Java语言和Eclipse、MySQL数据库编写

    本系统采用B/S三层架构,前端使用JSP技术开发,实现了用户界面的交互;后端使用Java语言开发,实现了业务逻辑;数据层使用MySQL数据库,实现了音乐资源的存储。系统采用MVC设计模式,实现了前后端的分离,提高了系统的扩展性...

    基于B/S架构SpringBoot+Bootstrap框架的中小医院信息系统

    基于B/S架构,SpringBoot+Bootstrap框架的中小医院信息系统。简单实现了挂号收费,门诊管理,划价收费,药房取药,体检管理,药房管理,系统维护等基础功能。 本系统是基于Thymeleaf+SpringBoot+SpringDataJPA实现的...

    校园二手交易平台的设计与实现

    采用B/S架构模式,基于Springboot框架,前端优化使用了ElementUI,系统采用Eclipse作为开发工具﹐以MySql作为数据库工具﹐使用Tomcat作为Web 服务器。系统分为前台模块和后台管理模块。其中前台模块实现了商品分类、...

    Java毕业设计-基于springboot开发的BS老年人体检管理系统-毕业论文(附毕设源代码).rar

    该系统采用BS架构,前端使用HTML、CSS和JavaScript等技术构建用户友好的界面,后端则基于Spring Boot框架进行开发,实现了用户管理、体检项目管理、体检结果管理等功能模块。通过该系统,用户可以轻松进行体检预约、...

    windows优化大师6.82.exe

    Windows优化大师1、改进了系统信息检测。&lt;br/&gt;(1)、增加了对Intel各款CPU内核代号、内核版本(步进)、前端总线(FSB)速度等信息的检测。&lt;br/&gt;(2)、增加了对AMD K8、K7架构的各款CPU内核代号、内核版本(步进)、...

    网络篇 2:图片优化——质量与性能的博弈(2).md

    [](https://user-gold-cdn.xitu.io/2018/10/18/16685737b823244c?w=489&h=329&f=png&s=19023) 我们将这个过程切分为如下的过程片段: 1. DNS 解析 2. TCP 连接 3. HTTP 请求抛出 4. 服务端处理请求,HTTP 响应返回...

    渲染篇 3:对症下药——DOM 优化原理与基本实践(1).md

    [](https://user-gold-cdn.xitu.io/2018/10/18/16685737b823244c?w=489&h=329&f=png&s=19023) 我们将这个过程切分为如下的过程片段: 1. DNS 解析 2. TCP 连接 3. HTTP 请求抛出 4. 服务端处理请求,HTTP 响应返回...

    应用篇 1:优化首屏体验——Lazy-Load 初探(2).md

    [](https://user-gold-cdn.xitu.io/2018/10/18/16685737b823244c?w=489&h=329&f=png&s=19023) 我们将这个过程切分为如下的过程片段: 1. DNS 解析 2. TCP 连接 3. HTTP 请求抛出 4. 服务端处理请求,HTTP 响应返回...

    基于Java+Mssql的学校教务管理系统源码

    B/S架构,在系统设计、实施上运用软件工程的思想,完全依照瀑布模型来编写设计文档。利用流程图,UML图等工具来设计程序,以避免逻辑上的错误。运用PowerDesigner工具进行数据库的设计。运用JUnit工具进行编写测试...

    ONES开源企业管理办公套件 v0.2.zip

    ONES基于B/S架构,客户端无缝跨平台,支持现代浏览器。   ONES 0.2 主要更新内容:2014-12-10 •更新远程服务API地址 •优化基础框架更新和应用安装/更新部分 更加稳定 •应用支持对依赖应用的版本检测 •...

    基于SSM的高校学生成绩分析管理系统设计与实现.zip

    系统采用B/S架构开发,使用框架开发,可降低代码耦合性,提高代码可扩展性。框架选择为SpringBoot和SSM框架,对前端展示使用了layui框架,布局简单美观,便于开发;成绩趋势展示、成绩对比结果、成绩正态分布图均...

    电子商务源码

    使用当前流行的JAVA语言开发,以MySQL为数据库,采用B/S J2EE架构。融入了模型化、模板、缓存、AJAX、SEO等前沿技术。与同类产品相比,系统功能更加强大、使用更加简单、运行更加稳 定、安全性更强,效率更高,用户...

    瑞宝通JAVA版B2B电子商务系统 v1.0.rar

    瑞宝通B2B系统使用当前流行的JAVA语言开发,以MySQL为数据库,采用B/S J2EE架构。融入了模型化、模板、缓存、AJAX、SEO等前沿技术。与同类产品相比,系统功能更加强大、使用更加简单、运行更加稳 定、安全性更强,...

    瑞宝通JAVA版B2B电子商务系统.

    瑞宝通B2B系统使用当前流行的JAVA语言开发,以MySQL为数据库,采用B/S J2EE架构。融入了模型化、模板、缓存、AJAX、SEO等前沿技术。与同类产品相比,系统功能更加强大、使用更加简单、运行更加稳 定、安全性更强,...

    Aycms自媒体建站系统wordpress模板 v1.0.1

    系统使用国内优秀开源框架THinkPHP,基于PHP+MySQL开发,采用B/S架构,前端自适应架构,pc和手机完美自动切换,上手容易,一键安装后添加好分类和关键词即可出现想要的效果。更新内容:1.默认不开启调试模式,网站...

    基于JAVA在线考试管理系统的毕业设计,系统主要分为两个模块:教师管理模块和学生考试模块

    系统采用B/S架构,前端使用JSP和HTML,后端使用Java语言开发,数据库使用MySQL。系统主要采用了Spring+MyBatis框架进行开发,同时使用jQuery和Bootstrap等前端框架。 ## 系统特点 该系统具有以下特点: 1. 提供了...

    萝卜视频源码前后端带视频演示更换播放内核到3.2.6 带视频教程.zip

    2、支持B站。 只要解析能解就能播放 3、修复点播 4、修复全屏/锁屏系统返回键 5、恢复游客试看功能 6、支持电视直播 三、修复前端不能删除播放记录 历史修复记录: 芒果,只要解析能解就能播放 修复前端不能...

    基于SpringBoot_mysql_后台资金管理系统vue_源码.zip

    基于java+SpringBoot_mysql_+MySQL+VUE的后台资金管理系统项目 联系统的技术在如今的社会中,应用的越来越广泛,通过互联系统我们可以更方便地进行办公,也能够在系统上就...关键词:后台资金管理系统,JAVA,B/S结构

    基于PHP主机域名管理器的毕业设计,使用MySQL数据库存储数据,采用PDO方式进行数据库访问 Bootstrap框架DNS管理

    系统采用B/S架构,前端使用Bootstrap框架,后端使用PHP语言编写。系统使用MySQL数据库存储数据,采用PDO方式进行数据库访问。系统的实现过程主要包括以下几个方面: - 界面设计:采用Bootstrap框架进行界面设计,使...

Global site tag (gtag.js) - Google Analytics