·缓存Dom选择与计算每次Dom选择都要计算,缓存他

减少了页面加载的时间了,也减轻了服务器的压力,看了一下javascript源码,里面写的了lazyload,我就百度了一下,找到了一个jquery的实现这种效果的插件:jquery.lazyload,一个很不错的插件。
比如你打开一个比较大或者长的网页,那么Lazy
load能够实现先加载您所看到区域的图片,等你滚动到哪里,就加载那里的图片。
如果你是图片网站,而且一个页面要加载很多图片,这个插件是个很不错的选择。
如何使用,引用如下js: 查看源代码打印帮助 复制代码 代码如下:

对这里的p段落标签无效,这里要用 $ 5.临近选择器:
—-3种基本选择器的组合,“+”隔开,只下一个兄弟节点
$,选取下一个兄弟节点.如:$,id为test的的节点必须是div的下一个兄弟节点.

·
无阻塞写在HTML头部的JavaScript,和写在HTML标签中的Style会阻塞页面的渲染,因此CSS放在页面头部并使用Link方式引入,避免在HTML标签中写Style,JavaScript放在页面尾

在你的页面中加入如下的javascript: 查看源代码打印帮助1 $;
这将会使所有的图片都延迟加载。插件还有几个配置项可供设置。
当然对于一些用户来说就上面的功能远远是不能达到要求的,下面我们看看是如何设置灵敏度的。我们可以设置阀值来控制
这个功能比较人性化吧。 $.lazyload; 把阀值设置成200
意思就是当图片没有看到之前先load
200像素。当然了你也可以通过设置占位符图片和自定事件来触发加载图片事件
查看源代码打印帮助 复制代码 代码如下:
$.lazyload({ placeholder : “img/grey.gif”, event : “click” });
我们还可以通过定义effect 参数来定义一些图片显示效果 查看源代码打印帮助
复制代码 代码如下: $.lazyload({
placeholder : “img/grey.gif”, effect : “fadeIn” }); 下载地址: source,
minified or packed

对这里的p段落标签有效.但对

·
预加载大型重资源页面可使用增加Loading的方法,资源加载完成后再显示页面。但Loading时间过长,会造成用户流失对用户行为分析,可以在当前页加载下一页资源,提升速度a)
可感知Loading 不可感知的Loading

则不能取到 6.属性选择器: —-“ |=|^|$|*”
把属性选择器不放在css选择器里面是因为jQuery中写法是不一样的.至于css中写法可以参考我之前写的一篇css的选择器一文.jQuery中是和xPath类似的写法:
$:选取所有该mix且具有attr属性的节点
$:选取所有该mix且具有attr属性并满足属性值为a_value的节点
$(“mix[@attr^=a_value_head”]):attr属性的属性值是以a_value_head开头的
$(“mix[@attr$=a_value_end”]):attr属性的属性值是以a_value_end结尾的
$(“mix[@attr*=a_value”]):attr属性的属性值中包含a_value 7.
限定选择器:
这个名称是我自己起的,其实选择器组合都有限定的意思,你明白后面所介绍的知识即可.
具有限定子节点选择器:$:返回包含mix2的mix1节点.如:$:包含a标签的div.
这个和$不相同.后者表示div中的a标签,返回的是a标签对象,前者返回的是div标签对象
冒号限定结点选择器:$:mix标签,并且满足限定条件.
E:root:类型为E,并且是文档的根元素
E:nth-child:是其父元素的第n个类型为E的子元素 ,基数从1开始
E:first-child:是其父元素的第1个类型为E的子元素
E:last-child:是其父元素的最后一个类型为E的子元素
E:only-child:且是其父元素的唯一一个类型为E的子元素

· 高频事件优化Touchmove、Scroll 事件可导致多次渲染a)
使用requestAnimationFrame监听帧变化,使得在正确的时间进行渲染b)
增加响应变化的时间间隔,减少重绘次数

$的选择器部分: 凡是运用$,其返回值是一个object
$选择器主要用于选择标签.基本用法是同css的选择器.但是,很让人兴奋的是,他支持常见的浏览器,而css中很多选择器是IE6所不支持的.
1.基本选择器: —-凡是运用$,其返回值是一个object
$是选取了所有的p标签节点 $是选取了id为test的标签节点
$,如$是选取了所有class为test的标签节点
上面的$返回的都是所有满足的节点,至于进一步筛选可以添加一些函数,如eq,gt,lt等等.
2.组选择器: —-3种基本选择器的组合,“,”隔开
下面还是现做一个约定:把”标签名或#id名或.class名”记作mix,则mix表示一个标签名,或一个#id或一个.class.
$,如:$(“div,#test1,p,.test2,#test3”) 3.后代选择器:
—-3种基本选择器的组合,“ ”隔开,直系皆生效
$,当然可以是多个嵌套,但后代选择器可以是深层子代,所以$这种写法作用不大.例子:$:在div标签内的所有具有test的class的后代元素(就是被div嵌套的class属性为test的标签)
4.子选择器: —-3种基本选择器的组合,“>”隔开,只亲子有效
$,这个放在后代选择器后面是为了和它做对比.子选择器只能选择第一代子代.不处理深层嵌套.例子:
$

[CSS优化]

在$中能取到p段落节点

· 尽量避免写在HTML标签中写Style属性

· 缓存列表.length每次.length都要计算,用一个变量保存这个值

· CSS写在头部,JavaScript写在尾部或异步

·
压缩图片图片是最占流量的资源,因此尽量避免使用他,使用时选择最合适的格式,合适的大小,然后使用智图压缩,同时在代码中用Srcset来按需显示PS:过度压缩图片大小影响图片显示效果a)
使用智图
b) 使用其它方式代替图片(1. 使用CSS32. 使用SVG3.
使用IconFont)c) 使用Srcsetd) 选择合适的图片(1. webP优于JPG2.
PNG8优于GIF)e) 选择合适的大小(1. 首次加载不大于1014KB2. 不宽于640

· 不滥用FloatFloat在渲染时计算量比较大,尽量减少使用

· 减少CookieCookie会影响加载速度,所以静态资源域名不使用Cookie

· 尽量使用事件代理,避免批量绑定事件

· 避免CSS表达式CSS表达式的执行需跳出CSS树的渲染,因此请避免CSS表达式

·
按需加载将不影响首屏的资源和当前屏幕资源不用的资源放到用户需要时才加载,可以大大提升重要资源的显示速度和降低总体流量PS:按需加载会导致大量重绘,影响渲染性能a)
LazyLoadb) 滚屏加载c) 通过Media Query加载

以上的一些优化技巧都是平常在互联网上积累下来的,分享出来能让您收益,开发出更高性能的移动产品。

· 减少重绘和回流a) 避免不必要的Dom操作b)
尽量改变Class而不是Style,使用classList代替classNamec)
避免使用document.writed) 减少drawImage

发表评论

电子邮件地址不会被公开。 必填项已用*标注