HTTP Alternative Services 介绍

HTTP Alternative Services(HTTP 替代服务)是今年上半年由 IESG 通过的一项与 HTTP 有关的新协议。估计很少有人能从名字上猜出它是用来干嘛的,本文从解决什么问题、如何使用以及真实场景下的应用三方面来介绍这份协议。 顺便说一下,HTTP 各种协议除了可以在 tools.ietf.org 找到,还可以前往 httpwg.org 查看。后者格式更丰富,阅读体验更好,例如本文介绍的 HTTP Alternative Services 协议也可以通过这个地址查看。[...]

继续阅读 »

谈谈 Nginx 的 HTTP/2 POST Bug

几个月前,我发现在某些情况下,使用 Safari 无法登录我的博客后台。当时研究了一下,发现这是 Nginx 处理 HTTP/2 POST 请求的一个 Bug。随后发布的 Nginx 1.11.0 解决了这个 Bug,我就没有持续再关注。直到今天看到 v2ex 这个帖子,我才发现 Nginx 并没有这部分代码合并到当前稳定版中。如果你在使用 Nginx 1.9.15~1.10.x 部署 HTTP/2 服务,请务必看完本文。[...]

继续阅读 »

开始使用 Docker

一年前,我在《开始使用 Vagrant》一文中写到:使用虚拟化软件安装 Linux,有着「统一线下线上环境、不受升级宿主系统的影响、容易备份和恢复」等几大优点,非常适用于搭建 WEB 开发环境。 但 Vagrant 这种依赖 VirtualBox/VMWare/Parallels Desktop 等软件虚拟完整操作系统的方案有几个硬伤,例如占用大量系统资源、新建或启动虚拟机不够迅速等。Docker 是操作系统级虚拟化,它虚拟出来的环境一般被称为 Docker 容器,而不是虚拟机。Docker 容器直接运行在宿主系统的操作系统内核之上,启动一个新的 Docker 容器能在秒级完成。[...]

继续阅读 »

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

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

继续阅读 »

本博客零散优化点汇总

熟悉本博客的同学可能早就发现,imququ.com 一直是我的一块试验田。我对网络协议、Web Server(Nginx)、服务端代码、前端代码每一层的研究和优化,最终都会在本博客体现出来。我见过很多大谈用户体验的博主,自己博客体验并不怎样。我并不想在写如何做好优化性能的同时,自己的博客却十分缓慢。 关于具体的优化方案,我之前写过一些文章,如 Nginx 配置之性能篇、HTTP/2 相关优化,以后还会继续写。例如我最近在研究 ECC 证书对 HTTPS 性能的提升,等有结论了一定会跟大家分享。但同时有很多优化点我觉得比较常规,不值得分别写一篇文章去介绍。我准备把这些零散优化点罗列在本文,并不进行深入讨论。有兴趣进一步了解和探讨的同学,欢迎发表评论。[...]

继续阅读 »

博客统计报告(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 客户端就是这么做的。[...]

继续阅读 »