前台javascript速度优化总结
- 格式:doc
- 大小:43.00 KB
- 文档页数:4
优化前端代码加载速度的方法在当今互联网时代,网页的加载速度成为了用户体验的重要因素之一。
尤其对于前端开发者来说,优化代码加载速度是一项关键的任务。
本文将探讨一些优化前端代码加载速度的方法,帮助开发者提升网页性能,提供更好的用户体验。
1. 缩小文件体积文件体积是影响代码加载速度的关键因素之一。
为了减小前端文件的大小,我们可以采取以下措施:(1)压缩代码:使用压缩工具(如uglifyjs)将代码压缩为更小的体积。
(2)减少注释和空行:将代码中的注释和空行删除,减少文件体积。
(3)合并文件:将多个CSS或JavaScript文件合并为一个文件,减少请求次数,提高加载速度。
2. 延迟加载在页面加载过程中,如果一次性加载全部的CSS和JavaScript文件,会导致加载时间过长。
为了提高加载速度,我们可以采取延迟加载的策略:(1)按需加载:根据页面的需要,将关键CSS和JavaScript文件优先加载,延迟加载其他非关键文件。
(2)异步加载:使用异步加载的方式加载JavaScript文件,不阻塞页面的加载,提高用户体验。
3. 使用缓存机制利用浏览器的缓存机制可以显著提高网页的加载速度。
我们可以通过以下方式利用缓存:(1)设置缓存头:在服务器端的响应头中设置合适的Cache-Control和Expires 参数,让浏览器缓存文件。
(2)使用版本号或哈希值:给文件名添加版本号或哈希值,当文件内容发生变化时,可以通过更改版本号或哈希值来更新文件,避免浏览器从缓存中加载旧版本。
4. 图片优化图片通常是网页中占用较大空间的文件类型,优化图片加载可以有效提升页面性能:(1)压缩图片:使用图片压缩工具(如TinyPNG)将图片压缩为更小的体积。
(2)使用适当的图片格式:根据图片的特点选择合适的格式,如使用JPEG格式保存照片,使用PNG格式保存图标和线条较多的图片。
(3)懒加载:对于大量存在的图片,可以采用懒加载的方式,只在图片进入可视区域时才加载图片。
学会使用JavaScript进行网页性能优化和加载速度优化JavaScript是一种广泛应用于网页开发中的脚本语言,它可以为网页增加动态效果和交互性。
然而,在开发过程中,我们需要思考如何使用JavaScript来进行网页性能优化和加载速度优化,以提高用户体验和网页加载速度。
本文将分为四个章节,介绍如何使用JavaScript进行网页性能优化和加载速度优化。
第一章:减少HTTP请求在网页加载过程中,浏览器需要发送多个HTTP请求来获取网页所需的各种资源,包括HTML、CSS、JavaScript、图片等。
因此,减少HTTP请求可以显著提高网页加载速度。
对于JavaScript 来说,可以通过以下几种方式来减少HTTP请求。
第一,合并JavaScript文件。
将多个JavaScript文件合并成一个文件,可以减少HTTP请求次数。
这样,当浏览器请求网页时,只需要加载一个JavaScript文件,而不是多个文件。
此外,合并后的JavaScript文件也可以优化代码结构,提高代码执行效率。
第二,压缩JavaScript文件。
通过删除无用字符、空格和换行符等来压缩JavaScript文件大小。
这样可以减少文件的传输时间和带宽占用。
同时,压缩后的JavaScript代码也可以加快代码执行速度。
第三,使用延迟加载。
将不影响用户初始视图的JavaScript代码延迟加载,可以避免阻塞页面的渲染过程。
这样,用户可以更快地看到网页的内容。
延迟加载可以通过动态创建<script>标签来实现,或者使用现有的工具库,如RequireJS。
第二章:优化JavaScript代码优化JavaScript代码可以提高代码执行效率和网页响应速度。
以下是一些常见的优化技巧。
第一,减少全局变量的使用。
全局变量会导致命名冲突和内存泄漏等问题。
因此,我们应该尽量避免使用全局变量,尽量将变量限定在函数作用域内。
第二,使用事件委托。
前端性能优化减少JavaScript的执行时间在前端开发过程中,优化网页性能是一个重要的课题。
JavaScript 作为前端开发的核心语言之一,其执行时间对网页性能影响巨大。
因此,减少JavaScript的执行时间是提高网页性能的关键。
I. 代码优化1. 消除冗余代码:通过去除不必要的重复代码和逻辑,减少脚本的体积和复杂度,从而提升执行效率。
2. 减少全局变量的使用:全局变量的访问速度相对较慢,应尽量减少全局变量的使用,改为使用局部变量,以提高代码执行的效率。
3. 循环优化:避免在循环中进行重复的计算和操作,尽量将一些重复性较高的计算或操作移到循环外,以减少执行时间。
II. 选择合适的数据类型和方法1. 使用数据类型的优化:在JavaScript中,不同的数据类型有不同的性能表现。
根据实际需求,选择合适的数据类型,如使用数字代替字符串等,可以加快代码的执行速度。
2. 使用高效的数组方法:JavaScript提供了丰富的数组方法,如forEach、map、filter等,根据实际需求选择合适的方法,以减少代码的执行时间。
III. 避免过多的DOM操作1. 批量操作DOM元素:多次操作DOM元素会导致页面重排和重绘,影响性能。
应尽量减少DOM操作的次数,可通过创建文档片段、合并多个DOM操作等方法进行批量操作,以减少页面重排和重绘的次数。
2. 使用事件委托:对于需要为多个子元素添加事件监听的情况,可以将事件监听器绑定在父元素上,通过事件冒泡机制实现事件的代理,避免为每个子元素都添加监听器,提高性能。
IV. 使用缓存和异步加载1. 缓存数据:对于一些需要多次访问的数据,可以将其缓存在内存中,以避免重复的网络请求,提高代码执行效率。
2. 异步加载资源:将一些不影响页面初始化的资源,如统计代码、广告等,使用异步加载的方式,以免阻塞页面的加载和渲染,加快页面的打开速度。
V. 使用工具进行性能分析和优化1. 使用性能分析工具:利用浏览器提供的性能分析工具,如Chrome的Performance面板,可以分析网页的性能瓶颈,找到需要优化的代码和方法。
前端开发中的页面加载速度优化技巧在当今互联网时代,用户对于网页加载速度的要求越来越高。
一个加载速度慢的网页不仅会让用户流失,还会影响网站的排名和用户体验。
因此,前端开发中的页面加载速度优化成为了一个重要的课题。
本文将介绍一些常用的页面加载速度优化技巧,帮助开发者提升网页的加载速度。
一、压缩和合并文件在前端开发中,通常会使用多个CSS和JavaScript文件来实现网页的功能和样式。
然而,过多的文件会增加HTTP请求的次数,从而导致页面加载速度变慢。
因此,我们可以通过压缩和合并文件的方式来减少HTTP请求次数,从而提升页面加载速度。
对于CSS文件,可以使用工具如CSSNano或者UglifyCSS来进行压缩。
这些工具可以去除多余的空格、注释和换行符,从而减小文件的体积。
同时,可以将多个CSS文件合并成一个文件,减少HTTP请求次数。
对于JavaScript文件,可以使用工具如UglifyJS或者Terser来进行压缩。
这些工具可以去除多余的空格、注释和换行符,并进行代码混淆,从而减小文件的体积。
同样地,可以将多个JavaScript文件合并成一个文件,减少HTTP请求次数。
二、使用缓存浏览器缓存是提升页面加载速度的重要手段。
当用户第一次访问网页时,浏览器会将网页的静态资源(如CSS、JavaScript和图片等)保存到本地缓存中。
当用户再次访问网页时,浏览器会直接从缓存中加载资源,而不需要再次发送HTTP请求。
为了使用浏览器缓存,我们可以设置静态资源的过期时间。
通过设置合适的过期时间,可以让浏览器在一段时间内直接从缓存中加载资源,而不需要再次下载。
可以通过在服务器端设置HTTP响应头的Expires或Cache-Control字段来控制资源的过期时间。
另外,还可以使用版本号或者哈希值来更新缓存。
当静态资源发生变化时,可以修改资源的版本号或者哈希值,从而让浏览器重新下载资源。
这样可以确保用户能够获取到最新的资源,同时又能够充分利用浏览器缓存。
前端开发中如何优化页面加载速度在当今互联网高速发展的时代,用户对网页加载速度要求越来越高。
而在前端开发中,优化页面加载速度成为了开发者的一项重要任务。
本文将着重介绍如何通过几项关键优化技巧来提升页面加载速度。
1. 压缩和合并文件在前端开发中,网页通常由多个CSS和Javascript文件组成。
然而,每个文件都需要向服务器发起请求,这会导致额外的网络开销和延迟。
为了减少请求次数和传输大小,可以使用压缩和合并文件的方法。
压缩CSS和Javascript文件可以通过去除空白字符、注释和不必要的代码来减小文件大小。
同时,合并多个文件为一个可以减少请求的数量。
这些优化可以通过使用压缩和合并工具如Minify和Webpack来实现。
2. 图片优化图片通常是网页中占用大量资源的元素之一。
为了提升页面加载速度,可以采取以下措施对图片进行优化。
首先,使用适当的图片格式。
对于图标和简单的图形,使用矢量图形(如SVG)可以减少文件大小并保持良好的清晰度。
对于照片和复杂的图像,使用压缩的图片格式如JPEG或WebP,并调整图像质量来平衡清晰度和文件大小。
其次,使用响应式图片。
通过根据设备类型和屏幕尺寸提供适当大小的图片,可以避免加载不必要的大尺寸图片,从而减少传输量。
最后,使用Lazy Loading技术。
该技术可以在用户滚动页面时,延迟加载图片,只有当图片进入可视区域时才会进行加载。
这可以提升初始加载速度和用户体验。
3. 延迟加载Javascript在一些网页中,Javascript可能会阻塞HTML解析和页面渲染,导致页面加载速度的下降。
为了提升页面加载速度,可以将Javascript代码分为两部分,一部分是必需的核心代码,另一部分是延迟加载的可选代码。
将核心代码放在HTML文档的头部,确保尽早加载和执行。
对于可选的代码,可以使用异步加载的方式,将其放在页面底部,或者使用动态加载技术,在用户需要时才进行加载。
4. 使用缓存浏览器缓存是提高页面加载速度的有效方法。
JavaScript优化总结分为以下几点优化前后对比优化前优化后代码混乱,同样功能的函数重复出现在多个地方。
如果需要修改实现,需要找到所有的地方。
牵一发而动全身模块化,提取公共接口组织为库、结构清晰、方便代码重用、并且能够游戏防止变量污染问题。
JavaScript文件未压缩,size比较大加载消耗网络耗时,阻塞页面渲染JavaScript公共库文件使用UglifyJS压缩:∙Size比较小优化了网络加载时间∙压缩混淆了代码,在一定程度上保护代码使用时需要加载多个单独的JavaScript文件,增加了http请求数降低性能对公共库合并压缩在减少size的同时,减少http请求数缺乏文档(让后面的开发者对已有功能不清楚,这在一定程度上造成前面说的,同样功能的函数重复出现在多个地方)公共库中每个类、函数、属性都有说明文档∙模块化(类编程):代码清晰、有效防止变量污染问题、代码重用方便扩展等;∙JavaScript压缩混淆:减少size优化加载时间,混淆保护代码;∙JavaScript文件合并:减少http请求优化网络耗时提升性能;∙生成文档:方便公共库的使用,查找接口方便。
模块化(类编程)对于静态类来说JavaScript实现比较简单,使用Object直接量就已经够用了;但是要创建实例化、可继承经典的类需要做一番工作。
因为JavaScript是基于原型的(prototype-based)编程语言,并没有包含内置类的实现(它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual等),但是我们通过JavaScript可以轻易地模拟出经典的类。
静态类根据宝宝JS公共接口的特性,它们不需要实例化,所以优化使用了该方式。
下面以PetConfigParser为例介绍下实现方式:var PetConfigParser;if (!PetConfigParser) {PetConfigParser = {};}(function () {//private 变量、函数/*** 宝宝所有配置字典,以【cate * 10000 + (lvl - 1) * 10 + dex - 1】为key* @attribute petDic* @type {Object}* @private*/var petDic = null; //宝宝字典/*** 根据__pet_config构建一个Object字典,以cate、dex、lvl组合作为key* @method buildPetDic* @private* @return {void}*/function buildPetDic() {petDic = new Object();for (var item in __pet_config) {var lvl = parseInt(__pet_config[item]['lvl']);var dex = parseInt(__pet_config[item]['dex']);var cate = parseInt(__pet_config[item]['cate']);var key = cate * 10000 + (lvl - 1) * 10 + dex;petDic[key] = __pet_config[item];}}//public 接口/*** 根据宝宝id,读取__pet_config中对应宝宝的信息* @method getPetById* @param {String/int} petId 宝宝id* @return {Object} pet 宝宝的所有静态信息,如{id:"300003289", lvl:"1", d ex:"2", price:"200", life:"2592000", cate:"3", name:"飞天小使等级1熟练2", i ntro:"", skill:"护身符", skill1_prob:"30", skill2_prob:"0"}*/if (typeof PetConfigParser.getPetById !== 'function') {PetConfigParser.getPetById = function (petId) {var pet = ("undefined" == typeof (__pet_config)) ? null : __pet_ config["pet_" + petId];return pet;}}})();这种方式利用了JavaScript匿名函数来创建私有作用域,这些私有作用域只能在内部访问。
前端开发中的页面加载优化经验分享在当今互联网时代,页面加载速度对于用户体验来说十分重要,因此在前端开发中,优化页面加载速度是一项非常关键的工作。
本文将分享一些页面加载优化的经验,帮助开发人员提升网页性能,为用户提供更好的访问体验。
1. 压缩和合并静态资源静态资源,如CSS文件、JavaScript文件和图片等,占据了页面加载的大部分时间。
通过对这些静态资源进行压缩和合并,可以减少请求次数,提升页面加载速度。
在压缩CSS和JavaScript文件时,可以使用相关的压缩工具,如YUI Compressor、UglifyJS等。
而对于图片,可以使用图像压缩工具将其大小缩小。
2. 延迟加载和异步加载延迟加载和异步加载是常用的页面加载优化技巧。
延迟加载指的是将一些不需要立即加载的资源,如图片和广告等,延迟到页面其他内容加载完毕后再进行加载。
这样可以提高网页的初始加载速度。
异步加载则是通过使用JavaScript的异步加载机制,在页面加载时并行加载多个资源,而不是串行加载。
这样可以减少加载时间,提升页面的响应速度。
3. 使用浏览器缓存利用浏览器缓存是提升页面加载速度的有效方法。
通过设置缓存策略,浏览器可以将一些静态资源缓存到本地,下次访问时直接使用缓存,减少请求次数和下载时间。
可以通过设置HTTP头部的Expires或Cache-Control字段来控制资源的缓存时间。
同时,对于频繁更新的动态资源,可以考虑使用文件版本号或哈希值进行缓存更新。
4. 使用CDN加速内容分发网络(CDN)可以将静态资源缓存在全球各个节点上,更快地将资源提供给用户,提升页面加载速度。
通过将静态资源部署到CDN上,并使用CDN的加速服务,可以将资源加载从原始服务器转移到距离用户更近的CDN节点上,减少网络延迟时间。
5. 优化图片加载图片是网页中常见的静态资源,优化图片加载可以有效减少页面加载时间。
可以通过以下几个方面来优化图片加载:首先,选择适当的图片格式,如JPEG、PNG和WebP等,根据图片的特点和需求选择最合适的格式;其次,使用适当的压缩率来减小图片文件大小,保持较高的图片质量和加载速度;另外,使用CSS技巧,如精灵图或图标字体,来减少图片的请求次数。
JavaScript性能优化技巧JavaScript是一种广泛应用于网页开发的脚本语言,但其性能问题也让开发者头痛不已。
本文将介绍一些JavaScript性能优化的技巧,帮助开发者提升网页的加载速度和运行效率。
一、选择合适的数据类型JavaScript中提供了多种数据类型,选择合适的数据类型可以提高代码的执行效率。
例如,对于存储整数的变量,可以使用number类型而不是string类型;对于存储多个元素的列表,可以使用数组而不是对象。
二、避免使用全局变量全局变量会增加代码的耦合性,同时也会增加代码的执行时间。
当JavaScript解析代码时,需要在内存中创建全局变量,并且在整个代码执行过程中都要对其进行访问。
因此,尽量避免使用全局变量,可以将其封装在函数内部或使用模块化的开发方式。
三、减少DOM操作DOM操作通常是JavaScript性能的瓶颈之一。
频繁的DOM操作会导致浏览器进行重绘和回流,影响网页的加载速度和响应速度。
优化DOM操作可以通过以下方式实现:1. 缓存DOM元素的引用:在需要多次访问某个DOM元素时,可以先将其保存在一个变量中,提高后续访问的效率。
2. 批量更新DOM:将多个DOM操作合并为一次,减少浏览器的重绘和回流次数。
3. 使用事件委托:将事件绑定到父级元素上,通过事件冒泡捕获子级元素的事件,减少事件绑定的数量。
四、尽量减少网络请求网络请求是网页加载时间的重要因素之一。
减少网络请求可以通过以下方法实现:1. 合并和压缩脚本和样式文件:将多个脚本文件或样式文件合并成一个文件,并使用压缩工具将文件体积减小。
2. 使用雪碧图:将多个小图标合并到一张大图中,通过CSS的background-position属性来显示不同的图标,减少图片的请求次数。
3. 使用缓存:合理设置缓存策略,减少重复的网络请求。
五、优化循环和遍历循环和遍历是JavaScript中常见的操作,其执行效率对性能影响较大。
14个JavaScript代码优化技巧2、尽可能的缓存缓存可以减少延迟和⽹络流量,从⽽减少了显⽰资源表⽰所需的时间,以提⾼⽹站的速度和性能。
缓存可以借助 Cache API 或 HTTP caching 来实现。
你可能想知道内容更改时会发⽣什么。
当满⾜某些条件(例如发布新内容)时,上述缓存机制能够处理和重新⽣成缓存。
4、尽早打破循环超⼤循环肯定会耗费很多的时间,所以你应该尽早打破这些超⼤循环。
你可以⽤ break 关键字和 continue 关键字来做这件事,从⽽编写更⾼效的代码。
在下⾯的⽰例中,如果你没有从循环中 break,则你的代码将循环运⾏ 1000000000 (10亿)次,显然会过载的。
let arr = new Array(1000000000).fill('----');arr[970] = 'found';for (let i = 0; i < arr.length; i++) { if (arr[i] === 'found') { console.log("Found"); break; }}在下⾯的⽰例中,如果你在循环不符合你的条件时没有 continue,则你仍将运⾏该函数 1000000000 次。
我们仅在数组元素处于偶数位置时处理它。
这将循环执⾏减少了近⼀半。
let arr = new Array(1000000000).fill('----');arr[970] = 'found';for (let i = 0; i < arr.length; i++) { if(i%2!=0){ continue; }; process(arr[i]);}5、最⼩化变量计算的次数为了减少计算变量的次数,可以使⽤闭包。
通俗来说,JavaScript 中的闭包使你可以从内部函数访问外部函数作⽤域。
JavaScript的性能优化随着互联网的快速发展和网站应用的普及,JavaScript已成为前端开发的核心技术之一。
然而,由于JavaScript在运行过程中需要解析和执行大量的代码,因此性能优化成为了开发人员必须面对的挑战。
本文将探讨JavaScript性能优化的几个关键方面。
一、减少HTTP请求在使用JavaScript时,最好合并和精简文件,以减少HTTP请求的次数。
可以将多个JavaScript文件合并为一个,避免了多个文件的下载和解析过程,提高了页面的加载速度。
同时,对于一些只在特定页面或功能中需要的脚本,可以进行按需加载,避免不必要的资源浪费。
二、使用异步加载使用异步加载脚本可以提高页面的加载速度。
可以通过将JavaScript脚本放在页面底部,或者使用async或defer属性来实现异步加载。
这样可以避免脚本的加载和执行阻塞页面的渲染,提高用户的浏览体验。
三、优化DOM操作DOM操作是JavaScript中常用的操作之一,但是频繁的DOM操作会带来性能问题。
在需要操作大量DOM元素时,最好先将其缓存到变量中,避免多次查询和操作DOM。
此外,可以使用文档碎片(Document Fragment)来批量操作DOM,减少浏览器渲染的次数。
四、避免内存泄漏JavaScript中的内存泄漏是指不再使用的内存没有被正确释放,最终导致内存占用过高的问题。
常见的内存泄漏情况包括没有正确清除定时器、未销毁的事件监听器等。
为了避免内存泄漏,需要在不再使用时手动释放资源,例如清除定时器、取消事件监听等。
五、使用合适的数据结构和算法在编写JavaScript代码时,选择合适的数据结构和算法可以提高代码的性能。
例如,使用数组而不是对象来存储大量的数据,可以提高遍历和访问的速度。
此外,合理选择循环结构、避免递归等也可以提高代码的执行效率。
六、优化网络请求在进行网络请求时,可以使用缓存来减少请求的次数。
可以为静态资源设置合适的缓存策略,例如通过设置Expires或Cache-Control来告诉浏览器缓存的过期时间。
两个基本点
1. 择重避轻,有所取舍。
●核心优先
通常来讲,系统是都是庞大的,不要太完美主义,先抓住重点,理解那些是我们的核心页面,那些页面对我们来说是最重要的,那些页面访问量最高,核心优先。
●主要问题在那,抓住瓶颈点。
治病要医本。
优化前,需要进行细致的分析,抓住主要瓶颈点,对症下药。
优化那么多的方子,别全采用,通常几个就能达到效果
2. 简单有效才是硬道理
越是简单的东西越容易控制,越不容易出错,尽量避免将系统设计的过于庞大,过于复杂,记住,这是在做产品,而不是在搞研发。
很多看似很蠢的方法,往往越是有效。
新技术,新方法的引用是具备一定的风险的,要评估,要慎重。
Js处理
1. 尽量放到页面尾部
Js的加载时阻塞页面的,没下载完毕后面的内容不会出来,所以尽量避免把JS放到页面头部,按照经验估计,整个页面中所用的JS逻辑,90%都是可以放到页面尾部。
2. 延迟加载(按需加载)
很多的业务逻辑并非每次都使用也不是要立即使用,首次加载过程中仅仅加载那些必须的,只有当必要的条件触发,才去加载请求必要的JS.比如说权限验证通过,加载管理模块。
点击发表文章按钮,加载与发表文章有关的验证和处理函数。
如果写过C++的肯定会接触过动态库和静态库,这个与之类似,什么时候需要什么时候再加载,首次打开页面肯定会清净了许多,而且业务逻辑也由此分离开来,管理和维护也会方便很多,毕竟减少了那么多的耦合。
按照BBS项目经验估计,普通页面的所有业务逻辑中需要在首次请求中加载的不到50%,我们的JS又由此砍掉了一半。
3. 合并JS,减少请求
请求多个小文件的效率远小于请求一个大文件的效率,因为需要多次DNS解析,多次连接,浏览器和server端也需要进行多次开启进程、权限验证和预处理,以及http请求在数据包传递上的一些问题。
所以尽量避免在页面中加载一堆的js 文件,需要先讲需要的小的JS合并成一个大的JS文件统一输出,页面因此被卡住的时间肯定会减少很多。
为了提高开发效率,合并建议不要每次都手动来进行,导致之后维护成本很大,相信些个XML配置文件,确定合并规则以及依赖关系后,用程序自动合并效率会高很多,后面有我附上的一个配置示例,仅作参考形式不重要
4.JS压缩
此手段属前端特有,毕竟流量意味着速度,意味着金钱。
是在降低代码的可读性为前提。
但事物的两面性告诉我们,可读性差也意味着安全,而且可读性可以通过保存压缩前的源文件来解决。
所谓的压缩,就是把场的变量名换成短的变量名,去掉没用的空格和换行符,从而节省我们JS程序的长度,不过目前这种处理已经很成熟,通过搜索可以搜出很多相关的工具。
不再细说
经验值,能压缩50%以上,视程序与压缩工具而论。
5. 尽量少用第三方库
在我的印象中,很多框架都是很庞大20K以上,虽然很强大很方便,但如果不是做企业级应用,不要用,因为我们也许只可能用到其中很少的一部分功能却加载了整个框架。
不过框架中的很多方法是可以提取出来滴,或者精简成一个轻量级的框架,比如说trimPath,完全可以精简到4k.
6. 合并ajax请求
Ajax请求的数据,如果涉及请求多种数据,尽量考虑到将其合并。
7. 合理的使用缓存
缓存视乎是server端的事,但是js中也是经常用的。
一种是缓存在一个全局变量中,一些很复杂的计算和查找操作可以这样做。
如果大家在使用模板类trimPath经常是需要对模板进行预处理,这种预处理的结果是可以被缓存的。
这种缓存的缺点是页面刷新后数据就会失效。
另外一种是缓存在或cookie里面,经常用来缓存一些AJAX 调用的结果,避免反复请求server端,比如一些用户的权限验证信息,就没必要总是调用server端接口,缓存了也就减少了请求,提高了性能,但cookie 大家要慎用,存于一些数据比较小的还行,每次http请求他是占用上行带宽的。
还有一种缓存的实现是借助于flash或其他的第三方组件,特点是可以缓存超大的数据,但是适应场景优先,需要特殊的平台支持,不过FLASH目前已经很通用了。
8. 能静态化输出,尽量少用JS渲染输出
页面制作
1. 素材合并
尽量把页面中的图片合并在一起,利用css sprite切割。
这样减少了请求的次数。
通常合并成3长大的图片,一张是有固定宽高的(比如说按钮),另外两张是分别横向或纵向平铺的1像素的小图,用来做背景用。
2. CSS压缩处理
道理同JS压缩,也是有很多工具实用的可用。
3. 图片背景切割与平铺
切图是很有讲究的,很多区域能切成用1像素平铺,尽量用1像素小图平铺,尽量用一个较大的图片设置成背静。
4. 少用iframe和frameset
首先一点frame会阻塞页面,第二,产生额外的请求,第三,如果涉及交互,增加开发维护成本,第四对搜索引擎优化不好
5. CSS尽量放到页面头部
浏览器只有等CSS下载完毕后,才会真正的显示页面,所以为了让页面尽快有所输出,把CSS放到头部,而且浏览器对CSS的处理时并行的,不会像JS那样会阻塞页面。
Server处理
1. 启用gzip压缩,约能压缩70%~80%
2. js,css,图片添加过期头,让浏览器能缓存。
能减少1/3以上的请求。
3. 静态页面、js、css等静态文件单独迁移
第一,可以针对静态文件做专门优化,比如说squid反向代理,nginx 代替apache做静态server。
第二,便于管理和维护,以后迁移和拓展方便。
4. js、css、图片等静态文件与当前应用放到不同的域名下。
不再传递那些无必要的cookie,减少传输。
5. 图片服务器分多域名。
浏览器对同一域名的只允许使用2个并发,如果页面图片过多,会由于并发排队从而阻塞页面。
但域名也不能太多,会消耗DNS解析的时间,建议4个为佳。
附加
1. JS合并配置文件示例
<?xml version="1.0" encoding="gb2312" ?>
<root>
<include>
<list><![CDATA[qStandBottom_static]]></list>
</include>
<js>
<list><![CDATA[/lib/postJs.obj.js]]></list>
<list><![CDATA[/lib/JSON.obj.js]]></list>
<list><![CDATA[/qmeditor/qmeditor/qmeditor/editor.js]]></list>
<list><![CDATA[/control/subjectList/subjectWriteLib.js]]></list>
<list><![CDATA[/control/subjectList/subjectWriteVote.obj.js]]></list>
<list><![CDATA[/control/subjectList/naviFilter.obj.js]]></list>
<list><![CDATA[/control/subject/checkDomain.js]]></list>
<list><![CDATA[/control/subjectList/subjectWriteBottomGlobal.js]]></list>
<list><![CDATA[/control/subjectList/subjectWriteBottom_asyncDeclare.js]]></list>
<list><![CDATA[/control/subjectList/subjectWriterEditor.js]]></list>
<list><![CDATA[/control/subjectList/subjectWriteBottom.obj.js]]></list>
<list><![CDATA[/control/subjectList/subjectWritePhoto.js]]></list> </js>
</root>
2. 常见分析与调试工具
IE Httpwatch
Firefox firebug
本文地址/165162897/blog/1248096280。