论坛网站和社区网站怎样做网站加速( 三 )
服务器根据CPU能力,尽可能输出gzip后的资源。为什么是尽可能输出gzip呢,因为可能你的页面需要支持古老手机端浏览器,一些古老的MID或者性能不太好的MID设备,或者是古老的IE6?如果不需要,那么请一律输出GZIP后的页面。
替换或者提高压缩算法和策略。如果你有特别的客户端,可以考虑使用自定义的更高压缩比的压缩方式,这个做手机应用的童鞋或许接触过,和十年前大家压缩MP3以及做软件压缩包一样,使用自己软件算法和策略替代市面上已有的算法和策略。如果没有特别的客户端,那么我们不妨对图片和视频使用更好的压缩格式,比如webp和webm,以及适当情况下的gif替代png等。
对静态资源内容适当排序。如对最后生成的css文件进行排序可以提高gzip压缩比。
适当添加页面额外内容,提高压缩比。可以将页面的通用样式或者脚本混合在页面里,提高页面压缩比。
使用脚本去掉多余的空格和换行。虽然对于gzip效果甚微,但是对于缓存读取和写入有特别大的差异。
使用缩略图/响应式图片来替代页面中展示的原始图片。传统模式下,我们可以使用服务端脚本thumb类库/CDN提供的图片缩略服务来进行资源的缩略图,来替换原始图片,并增加一些交互文本,对用户实现降级访问。如果用户浏览器支持CSS3,那么我们可以使用Media Queries特性来对内容图片进行切换。如果用户浏览器支持HTML5,我们可以使用image-set标签来进行图片响应式输出。
接下来我们来说说另外一种变相的数据压缩,减少请求。
页面提供资源数量尽可能减少同一时间的资源请求数量。对于静态样式和脚本,使用合并策略。针对单页面程序,你可以将所有样式或者脚本都合并为一个单独的文件。但是针对多页面,以及带有皮肤策略的站点,则考虑抽象基础的Base内容和额外的内容,并通过前后端脚本进行策略加载。对于图片和视频资源,在交互允许的情况下,使用延时加载,跨屏预加载一定数量,来取代页面文档加载完成后就加载全部的策略。
对不同浏览器使用不同的脚本。差异对待浏览器,对古老浏览器不使用一些功能,以及差异对待浏览器使用的基础脚本库。如果你使用下一节提到的JS加载器,那么这个很容易做到。
页面增量更新。如果你的内容支持异步增量更新,那么使用接口更新增量内容的模式,来替换打开新页面的模式。曾几何时,这个被称作ajax页面局部刷新。
客户端缓存此处深坑,稍后留写一篇详叙,简单的说,尽可能给所有资源使用最长时间的缓存,对于不支持200 cache的客户端提供304 Modified缓存(前者不需要额外HTTP请求)。
客户端本地缓存。对于变化不大的站点,配合脚本,对支持使用本地缓存的客户端进行适当的数据缓存,这个是深坑,且有一定的安全风险,稍后写篇具体的内容来描述。
上面提到的内容,多数属于道,现在我们来聊聊术。
页面资源加载时机做网站时间比较久的童鞋或许还记得yahoo slow总结出的几条“规则”:
把css放在文档顶部。把js放在文档底部。减少inline脚本的存在。这里或许应该为:
将页面主要样式尽可能放在文档顶部。将三方不可合并脚本尽可能放置页面底部。将页面inline脚本尽可能替换为配置内容。将基础样式放置于文档顶部,可以让页面渲染基础内容更快,如果前几点你都做到了,或者做到大多数,项目复杂度不高的话,那么把所有的样式打包合并放在此处也无关系。
将三方不可合并的内容放在页面底部,一方面是出于维护的考虑,一方面是因为我们要使用JS加载器来控制资源的加载(这里需要将原本页面中的脚本替换为具体执行脚本所需要的inline脚本配置)。
做到如此,页面将会首屏渲染极快,以及页面卡顿大幅减少(大量动画情况另说)。
用户终端某时刻性能这个不是我们所能控制的,因为受限于客户端宿主机性能以宿主机网络环境。和最开始提到的服务器性能一样,CPU时间片被其他程序占用时,或者硬件古老,以及网络被其他程序占用的时候,会带来浏览的不畅。
推荐阅读
- 北京西城无症状感染者所在社区9566人已全部完成检测采样
- 「社区」优居强村兴产富民:解码宿豫乡村振兴 “大道康庄”江苏篇
- 长春社区开设助老餐厅探索解决老人“吃饭难”
- 第二届江苏慈善论坛在南京开幕
- |清江浦区“居民微自治”走出社区治理新路径
- 有啥方法,网站,项目可以自己练习计算广告学
- |律师进“群”实时解答 苏锦街道创新社区普法方式
- 设计专业学生上传自己的作品,用哪个网站比较好
- |常州:检察官送法到社区 普法到群众
- |徐州经开区桥南头社区“户长制”管理开创基层治理新局面
