独立的“无限滚动”插件

“无限滚动”(Infinite Scroll)是 Jetpack 的一个功能,支持这个功能的主题可以使用 Ajax 加载博文,而读者不用点“下一页”来看更多的文章,直接往下滚动页面即可。本博客就支持“无限滚动”,有兴趣的同学可以去首页试一下。

但问题是,Jetpack 的设计太差,实际上它毫无设计可言,几乎不能算是一个正常的软件。Jetpack 自诩为模块化设计,它大概包含了超过 15 个模块,“无限滚动”是其中一个,用户可以选择关闭其中的一部分模块,只启用自己需要的。听上去很不错,但由于某些模块之间互相依赖,比方说启用了模块 A,而模块 A 为模块 B 提供了某些功能而多加载一个 CSS 文件,如果设计得不好,即使模块 B 没有被启用,这个 CSS 文件也会被加载。而 Jetpack 中有很多地方都“设计得不好”。于是我装了 Jetpack 之后,首页就新增了 3 个 CSS 文件,而这些都不是我需要的。

另外,Jetpack 虽然是“模块化”的,但它并不能删除某个模块,被关闭的模块只是逻辑上不加载而已,并不是物理上把文件删除了。这样一来,如果某个模块有安全问题,即使没有启用,也会被黑客利用。因为一个不需要的功能而被攻击实在是得不偿失的事情。

在 Jetpack 中,我只需要一个“无限滚动”的功能,其它的模块对我来说都是鸡肋。但是由于 Jetpack 这个怪物的存在,一些功能重复的独立插件都渐渐退出了市场,“无限滚功”也是这种情况。无可奈何之下,我只能从 Jetpack 中剥离了“无限滚动”模块,做成一个单独的插件。

这是插件的链接:https://wordpress.org/plugins/infinite-scroll-from-jetpack/。已经上传到 WordPress 的插件库了,在后台即可安装。它和 Jetpack 的原生功能兼容,只要主题支持,可以直接替换之。

Enjoy!

博客遭受 DOS 攻击

很莫名地从今天 UTC 9:00 开始,博客就被中断服务了,3 小时后恢复。

GCE 表示主机每秒收到 4M 的数据请求(正常情况应该小于 100K),主机 CPU 直接就 100% 了,SSH 都连不上。由于 GCE 没有提供详细的报告,我并不知道攻击具体是怎么样的,只能一边猜一边尝试着解决。

长话短说,似乎 DDOS 攻击是针对 IP 的,并且没有通过 HTTP GET 方式,难道是被朝鲜的黑客误伤了?最终我被迫更换了主机的 IP 并修改了 DNS。看上去这样可以暂时躲避掉攻击,但这样不能从根本上阻止 DDOS,不知道什么时候又会被攻击。

使用 Google 搜索作为博客的默认搜索引擎

心血来潮把博客的搜索功能改成了 Google 搜索,下面先放出代码:

这样做有几个好处:

  • 搜索功能不占用博客自身的资源,不会被 DOS 攻击;
  • 有利于多站点搜索,Wordpress 自身的搜索仅限于当前站点;
  • Google 搜索的结果更精准,还提供了自动更正等功能。

唯一的坏处是搜索结果会显示为 Google 的界面,可能会带来一些误会,故有此一文。