博客统计报告(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 协议版本,这两个问题就迎刃而解了。[...]

继续阅读 »

三种解密 HTTPS 流量的方法介绍

Web 安全是一项系统工程,任何细微疏忽都可能导致整个安全堡垒土崩瓦解。拿 HTTPS 来说,它的「内容加密、数据完整性、身份认证」三大安全保证,也会受到非法根证书、服务端配置错误、SSL 库漏洞、私钥被盗等等风险的影响。很多同学认为只要访问的网站地址前有一把小绿锁就绝对安全,其实不然。本文通过介绍三种最常规的 HTTPS 流量解密方法及原理,浅谈一下 HTTPS 的安全风险。[...]

继续阅读 »