【译】Optimize for mobile-移动端优化
移动端优化
由于移动设备有限的CPU处理能力,移动网络的高往返时间,以及移动应用的快速增长,对移动端的理解以及优化相对于PC端来讲变得更加重要。Page Speed Insights 现在可以让你轻松地分析和优化您的移动端网站的性能。下面讲的很多移动端的最佳优化方案也同样适用于PC端,所以这些建议也包含在PC端浏览器的网页速度分析报告中。
推迟JavaScript的解析
概览
为了加载一个页面,浏览器必须解析所有 <SCRIPT>标签的内容,这额外的增加了页面的加载时间。最小化页面加载所需的JavaScript,推迟解析JavaScript直到需要执行的时候,通过这种方式你可以有效降低页面初始加载时间。
详细介绍
有几种方式可以用来推迟JavaScript的解析。最简单同时又是最优的方式是简单地延迟JavaScript的加载,直到需要的时候。第二种方法是在适当的时候使用<script async>属性,将它推迟到UI线程比较空闲的时候加载,以此来阻止对页面加载造成的阻塞。如果这些技术都不合适,在移动应用中,下面还有一些额外的常用技巧:
当构建移动应用程序时,预先加载所有需要使用的JavaScript非常重要,这样就算用户处于脱机状态仍然能够继续使用。在这种情况下,一些应用,如移动Gmail,发现在注释(comments)中加载Javascript并且直到需要使用时才eval()这种方式非常有用。这种方法保证了所有的JavaScript在初始页面时加载,但是不要求去解析这些JavaScript。
在注释(comments)中存储代码的一种替代方式是在JavaScript字符串常量中存储代码。当使用这种技术时,Javascript只有在需要的时候通过再次调用eval()对JavaScript字符串常量进行解析。这种方式同样可以让应用程序预先加载Javascript,但推迟解析,知道需要使用的时候。
请注意,将<SCRIPT>标签移到页面的尾部是次优的,因为浏览器在将Javascript解析完之前将一直呈现一个繁忙的状态。用户可能会等到页面加载状态显示完全加载完毕才会进行页面操作,所有,最大限度地减少浏览器中显示的页面加载完成的时间是很重要的。
在2011年初进行的测试中,我们发现,在现代移动设备,JavaScript每增加1千字节,页面总的加载时间将会多出1ms的js解析时间。因此,页面初始化加载时100KB的Javascript对用户来讲会增加100ms的加载时间。因为每次访问页面时JavaScript都将被解析,这些时间将会成为每个页面加载时间的一部分,不管是从网络加载,还是通过浏览器的缓存,又或者是使用HTML5的离线模式。
使登陆页(着陆页,landing page)重定向可缓存
概览
很多页面,尤其是移动页面,会将用户重定向到一个不同的URL,例如从www.example.com 到m.example.com。通过让用户的浏览器对此重定向进行缓存可以在用户重复访问该网站时加快页面加载时间。
详细介绍
如果可能的话解决重定向最好的方式是删除重定向,但有些情况下确实很难取消登录页重定向,尤其是重定向到移动端网站。举例来说,一个网站的移动版本部署在不同的Web服务器上,这就要求访问时重定向到一个不同的域名。在这种情况下,使重定向到移动特定的网站的请求可缓存,以减少用户重复访问页面加载的时间就非常重要。如果您的网站的移动版本与PC站点是使用的同样的web服务器,你就不应该使用重定向到移动版本的方式而是应该使用与PC站点同样的URL。
建议
移动专用站点的重定向必须是私有高速缓存,以防止代理服务器将移动站点重定向给非移动用户。我们建议您使用302重定向,并存缓存一天。重定向应包括一个Vary:User-Agent 头以及一个Cache-Control:private头。这些头防止代理服务器将移动专用站点重定向给非移动用户。您可能还需要包括一个Expires头,以防止旧的HTTP/1.0代理缓存这些重定向然后发给非移动用户。
【译】Optimize for mobile-移动端优化的更多相关文章
- 全面解密QQ红包技术方案:架构、技术实现、移动端优化、创新玩法等
本文来自腾讯QQ技术团队工程师许灵锋.周海发的技术分享. 一.引言 自 2015 年春节以来,QQ 春节红包经历了企业红包(2015 年).刷一刷红包(2016 年)和 AR 红包(2017 年)几个 ...
- OPTIMIZE TABLE linked list 表优化原理 链表数据结构 空间再利用
小结: 1.加快读写: 2.对于InnoDB表,在一定条件下,通过复制旧表重建: 3.实践中, 3.1.show processlist;查看线程,发现,认为堵塞读请求: 3.2.数据长度空间不变,索 ...
- tagCould3d 移动端优化版
针对https://github.com/bitjjj/JS-3D-TagCloud这个版本的做了移动端性能优化(使用transform做偏移及缩放,优化帧).基本原理一致. class TagCou ...
- 【译】如何编写“移动端优先”CSS
原文链接:https://zellwk.com/blog/how-to-write-mobile-first-css/ 构建响应式网站是如今前端开发者的必备技能,当我们谈到响应式网站时,“移动端优先” ...
- 移动端优化 && 清除移动端网站点击a标签时闪现的边框或遮罩层(CSS) && 移动端点击 && 文字不可选择
在移动端网站,当你点击加了a标签的文字或图片时,该元素的周围会闪现一个蓝色的边框,在微信上的网站就是如此:而有的浏览器会闪现一个半透明遮罩层,比如移动端的Chrome浏览器,其实这些特效无非就是为 ...
- PHP服务端优化全面总结
一.优化PHP原则 1.1PHP代码的优化 (1)升级最新的PHP版本 鸟哥PPT里的对比数据,就是WordPress在PHP5.6执行100次会产生70亿次的CPU指令执行数目,而在PHP7中只需要 ...
- jQuuery Mobile 移动端开发框架
jQuery Mobile 是创建移动 web 应用程序的框架. jQuery Mobile 适用于所有流行的智能手机和平板电脑. jQuery Mobile 使用 HTML5 和 CSS3 通过尽可 ...
- 【gRPC】C++异步服务端优化版,多服务接口样例
官方的C++异步服务端API样例可读性并不好,理解起来非常的费劲,各种状态机也并不明了,整个运行过程也容易读不懂,因此此处参考网上的博客进行了重写,以求顺利读懂. C++异步服务端实例,详细注释版 g ...
- [mobile]移动端页面没有重新请求时,刷新页面代码
<input type="hidden" value="yes" id="id_if_reload" /> <script ...
随机推荐
- windows驱动编程入门(第一个程序)
1. 工具 vc6.0 WINDDK 3790.1830 Dbgview 驱动加载工具InstDrv32位/64位中文版 2. 代码 first.c /// /// @file first.c /// ...
- PDO扩展使用方法
pdo扩展为php访问数据库提供了一个轻量级的一致接口,pdo提供了一个数据访问抽象层,这意味着不管使用哪种数据库,都可以使用相同的函数来查询和获取数据. $dbms='mysql'; //数据库类型 ...
- error LNK2019: 无法解析的外部符号 "public:
错误 1 error LNK2019: 无法解析的外部符号 "public: __thiscall test::test(void)" (??0test@@QAE@XZ),该符号在 ...
- Citrix 服务器虚拟化之十一 Xenserver管理vApps
Citrix 服务器虚拟化之十一 Xenserver管理vApps vApps是把几个业务相关的虚拟机作为一个单一实体管理,把vApps中的虚拟机的称为Application.启动vApps时其中包 ...
- jQuery工具函数下
测试操作 1.判断是否为数组对象 $(function () { //判断是否为数组对象 var arr = [1,2,3,4]; alert($.isArray(arr));//true }); 2 ...
- Window10安装TestLink,以及登录mysql数据库的错误处理
步骤一: 需要安装apache和mysql,但是我们这里仅仅是使用testlink,不关注其他,所以使用Vertrigoserv进行傻瓜式安装,安装完后,下载testlink解压,将解压后的文件放入D ...
- CodeForces 187A Permutations
反向思维,先求数组中不用处理的元素个数,再用n减去这个数,得到结果. #include <iostream> #include <cstring> #define maxn 2 ...
- android 测量控件视图的方法
在实际项目中经常要用到 测量一个控件或者视图的高,宽.然后根据这个高宽进行一些逻辑. 计算视图宽高有几种方式先简单的了解下android 视图的绘制过程会促进理解. 一.android View绘制过 ...
- NFC的安全性
NFC近距离无线技术具有快捷.易用.安全等特性,其中安全是支付行业最关心的特性. 众所周知传统磁条银行卡的账号信息,是记录在磁条中,当进行刷卡交易时,POS机将交易金额,银行卡中的账号信息以及用户输入 ...
- ios 开发指南
苹果Xcode帮助文档阅读指南 iOS开发官方文档汇总 翻译"iPhone SDK 开发"之UIKit使用… iOS中arc的设置与使用