移动 WEB 通用优化策略介绍(二)

算起来已经足足两个半月没有更新文章,这段时间过得比较忙:夜间跑步计划、卖房买房以及工作上各种事情都凑到一块了。实际上,最近也并没有忙到完全抽不出时间写博客这种地步,根本原因可能还是变懒了,这样不好。 几个月前,我决定开始写一系列有关「移动 WEB 通用优化」的文章,介绍「面向所有主流移动端浏览器(包括各种 APP 嵌入的通用 Webview)」的前端优化策略,本文是这个系列第二篇。[...]

继续阅读 »

博客统计报告(2016 上半年)

从 2008 年到现在,我写独立博客已经有八个年头了。这期间我的域名从一开始的 qgy18.com 换成了 imququ.com,博客程序也换过好几版。在这过去的八年里,我从未公开过本博客统计相关数据。 最近我在 v2ex 无意中提到本博客每天有三五千 PV 时,某位同学提出了疑问: 这样的网站平时也有三五千???流量来源哪里?(via) [...]

继续阅读 »

为什么我们应该尽快支持 ALPN?

昨天有位朋友在微信上发过来一个链接:The day Google Chrome disables HTTP/2 for nearly everyone: May 31st, 2016(中文翻译)。看标题这篇文章说的是 Google Chrome 即将大面积禁用 HTTP/2,这究竟是怎么回事呢?本文为你揭晓答案。[...]

继续阅读 »

为什么我们应该尽快升级到 HTTPS?

最近一年,我写了不少有关 HTTPS 和 HTTP/2 的文章。很多同学都问我,HTTPS 真的有那么好吗,我的 WEB 服务需要迁移到 HTTPS 吗?对此我的观点是:HTTPS 早就不是锦上添花的可有可无项,它已经逐渐成为 WEB 服务的标配,推荐大家尽早升级。[...]

继续阅读 »

关于启用 HTTPS 的一些经验分享(三)

关于「启用 HTTPS 的经验分享」这个话题,我已经写过两篇文章:第一篇主要介绍 HTTPS 如何与一些较新的安全规范配合使用,面向的是现代浏览器;第二篇主要讨论启用 HTTPS 过程中,在 SSL 版本、Cipher Suite、证书、SSL 扩展(如 SNI)等方面可能遇到的问题,以及在老旧浏览器下如何取舍。本文做为本系列最后一篇,我想补充一些启用 HTTPS 过程中的注意事项。[...]

继续阅读 »

如何压缩 HTTP 请求正文

上篇文章中,我介绍了 HTTP 协议中的 Accept-Encoding/Content-Encoding 机制。这套机制可以很好地用于文本类响应正文的压缩,可以大幅减少网络传输,从而一直被广泛使用。但 HTTP 请求的发起方(例如浏览器),无法事先知晓要访问的服务端是否支持解压,所以现阶段的浏览器没有压缩请求正文。 有一些通讯协议基于 HTTP 做了扩展,他们的客户端和服务端是专用的,可以放心大胆地压缩请求正文。例如 WebDAV 客户端就是这样。[...]

继续阅读 »

HTTP 协议中的 Content-Encoding

Accept-Encoding 和 Content-Encoding 是 HTTP 中用来对「采用何种编码格式传输正文」进行协定的一对头部字段。它的工作原理是这样:浏览器发送请求时,通过 Accept-Encoding 带上自己支持的内容编码格式列表;服务端从中挑选一种用来对正文进行编码,并通过 Content-Encoding 响应头指明选定的格式;浏览器拿到响应正文后,依据 Content-Encoding 进行解压。当然,服务端也可以返回未压缩的正文,但这种情况不允许返回 Content-Encoding。这个过程就是 HTTP 的内容编码机制。[...]

继续阅读 »

Chrome 中 scrollingElement 的变化

相信大部分前端同学都知道,Webkit 对于页面滚动条位置,没有按照标准处理。以下是摘自 W3Help 的说明: 在混杂模式下,由于所有浏览器均使用 document.body.scrollTop 获取页面的垂直滚动条的位置,所以不会出现兼容性问题。而在标准模式下,由于 Chrome 与 Safari 仍然使用 document.body.scrollTop,而对于 document.documentElement.scrollTop 返回为 0。 [...]

继续阅读 »

移动 WEB 通用优化策略介绍(一)

在我去年的《AMP,来自 Google 的移动页面优化方案》这篇文章里,我给自己挖了个坑: 借助客户端所做的优化,如现在广为流行的移动端 Webview 容器加速方案,优化效果局限在指定 APP 内,甚至还会导致使用通用浏览器访问速度更慢(这个话题很有意思,有机会以后再讨论)。 现在过去快半年,我终于想起来把这个坑填上,今天先来写这个系列第一篇。[...]

继续阅读 »

谈谈 HTTP/2 的协议协商机制

在过去的几个月里,我写了很多有关 HTTP/2 的文章,也做过好几场相关分享。我在向大家介绍 HTTP/2 的过程中,有一些问题经常会被问到。例如要部署 HTTP/2 一定要先升级到 HTTPS 么?升级到 HTTP/2 之后,不支持 HTTP/2 的浏览器还能正常访问么?本文重点介绍 HTTP/2 的协商机制,明白了服务端和客户端如何协商出最终使用的 HTTP 协议版本,这两个问题就迎刃而解了。[...]

继续阅读 »