论挫骨扬灰

天底下没有新鲜事。如果我对于一个人的立场不满乃至反对,我可以选择无视。

但问题是,我现在听说,有一个人为了彻底辩倒他的对方辩手,乘着对方一辩刚刚讲完立场陈述,便将对方一闷棍下去,拖到不知何处,死了还要挫骨扬灰洒向远方。

我想不出什么比这个更加残忍的了,心凉透了。

月湖随想

月湖公园是在佘山森林公园旁边开的一家雕塑公园,旁边是武警一个中队。
去这里的路上,我们班某学霸同学表示,当他的父亲还在武警服役的时候,他经常从薛山旁边的后门,跑到在建的月湖公园里去(因为分为四期建设,当时公园可能已经部分开放),见证了月湖从薛山下一片洼地变成一片人工湖泊的过程。

这个公园,如果你是抱着去玩的心态,也可以玩的很开心——和其他收门票的民营公园不同,其内部除了游览车之外,其他的游艺项目基本免费。但是,如果你抱着欣赏景色、欣赏雕塑艺术的心态,可以逛的更好。

开学随想

我常常在高中校园盘桓,嘴上说是散步,不如说是散心。

我意识到我和过去那个无忧无虑在高中操场上或跑或坐或跳或蹲,无忧无虑的初中生活越走越远,越走越远。我每前进一些,就愈加感到步履维艰,前路漫漫。

背着多重的身份和多重的包袱,也有不为人知不可告人的一面,我深知我的年轻气盛和懵懂无知带来的是沉重的代价,成长的代价,痛苦的代价。

每天来到校园,都会向东看看。我很清楚,黑暗的黎明虽终会过去,但不是每天都有希望的晨曦照耀这片神奇的土地。每天来了很多人,去了很多人;留下一些人,离开一些人。

我有时感到心情沉重,会自我安慰:活着不是为了追寻意义,活着就是最大的意义。我也听到我就读班级的班主任老师说:活着,走未走过的路,见未见过的人。

我曾经多次幻想,改变这个世界,然而我发现有事时改变自己都是那么困难,改变世界都是虚妄。有时我变得唯心,以为我死了世界就不存在了。然而我的内心告诉我并非如此。

感谢那些人那些事给我的教训和经验,我将会砥砺前行,不忘初心。无论挑战几何,困难多大,前路何其泥泞险峻,我都会往前,活下去,奋斗下去。

吾往矣!

启用 Brotli 压缩算法,减少流量

关于 Brotli

与常见的通用压缩算法不同,Brotli使用一个预定义的字典。该字典包含超过13000个常用字符串,这些来自一个文本和HTML文档的大型语料库。预定义的算法可以提升较小文件的压缩密度。

使用Brotli替换Deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。

支持度

  • Mozilla FirefoxFirefox 44中开始支持Brotli
  • Google ChromeChrome 49开始支持Brotli
  • OperaOpera 36开始支持Brotli

以上正式支持该压缩编码的浏览器,约占全球浏览器的一半。

备注:

以上两个栏目内容,参阅了:

必要资源

将该算法运用到nginx中,需要用到以下的库:

安装过程:

1.首先安装 bagder/libbrotli

$ git clone https://github.com/bagder/libbrotli
$ cd libbrotli

# 备注,下一步所执行的 autogen.sh 会自动从 Github 下载 google/brotli 这个库,无需另外下载。

$ ./autogen.sh

$ ./configure
$ make && make install

2.然后下载 google/ngx_brotli

$ git clone https://github.com/google/ngx_brotli

然后,编译安装 nginx

$ cd nginx-1.11.5

# 此处应该有你自己的配置,再加上 google/ngx_brotli 库。
# --with-cc-opt=-Wno-deprecated-declarations 是暂时性的配置,因为该软件中压缩相关 API 正在修改。

$ ./configure --add-module=/path/to/ngx_brotli --with-cc-opt=-Wno-deprecated-declarations
$ make && make install

3.根据 GitHub 页面,配置nginx.conf,在 http 配置段增加以下配置:

brotli               on;
brotli_comp_level    6;
brotli_buffers       16 8k;
brotli_min_length    20;
brotli_types         *;

4.考虑到部分基于 Node.js 的博客会在后台自动 Gzip ,所以在网站反代配置里加上下面这一句话,目的是告知后端:前端不接受 Gzip 编码。

proxy_set_header Accept-Encoding "";

5.最后,测试配置,重载生效。

可能的报错

如果在测试或者重载时, Nginx 报错如下:

nginx: error while loading shared libraries: libbrotlienc.so.1: cannot open shared object file: No such file or directory
方案一

可行的解决方案之一,是把对应的库文件在 /lib(64) 或者 /usr/lib(64) 中做上软链接:

# 64 位系统
$ ln -s /usr/local/lib/libbrotlienc.so.1 /lib64

# 32 位系统
$ ln -s /usr/local/lib/libbrotlienc.so.1 /lib
方案二

直接编辑 /etc/ld.so.conf ,加上一行:

/usr/local/lib/

执行:

$ ldconfig

执行方案一或二,并且重载 nginx ,若无报错,问题解决。

本文总结

Mozilla-48-br

上图:Mozilla 48 测试

Chrome-br

上图: Chrome 52 测试

经过测试,(本文发布前)本站首页大小: Gzip 压缩时为 3.7KB , Brotli 压缩时为 3.4KB 。
经过观察,虽然压缩耗时有所提高——尤其对于低配置服务器而言,但是传输耗时有所减少,能够有效降低加载耗时。

备注

本站另外启用了 SDCH 压缩功能,但暂时没有能够正常使用。

最后推荐一篇文章: Cloudflare 员工写的*Results of experimenting with Brotli for dynamic web content*,对于这个技术的利弊说的很浅显明白。