启用Google AMP移动网页加速显示技术

早前关注过AMP移动加速显示优化技术(加速移动页面Accelerated Mobile Page)(百度有类似MIP,Facebook有Instant Article),尤其是在Google移动搜索里搜索新闻时候,经常见到排在前面的结果会有AMP闪电符号,打开这种结果网页也是异常地快速与简洁。
2016年8月,Google宣布AMP移动搜索结果将适用于所有网站(Google取消了移动友好页面的Mobile Friendly标志就是为了给AMP标志让路)。百度、搜狗、雅虎日本最近也宣布支持收录AMP网页,表明此技术应用越来越广泛。大势所趋,土木坛子现在也开始使用AMP技术来加速移动端加载速度。
只需在WordPress后台安装官方AMP插件(不建议安装第三方的插件, 插件的中文翻译支持参考该文章),开启插件即可——不需要任何设置。对于非移动端,直接在每篇文章页面链接的最后加上AMP就可以看到AMP显示效果。也可以使用Chrome的AMP插件来检查页面上可能的HTML语法错误。
配置好AMP后,之后等待Google爬虫来索引就可以了——也可以手工去Google Webmaster后台提交。我的网站在开启AMP后24小时不到,就可以看到Google已经开始在移动端提供部分搜索结果的AMP(需要在Google手机移动端点击,平板和PC桌面Google都不行)网页了。

AMP本质技术原理其实就是一个简洁版并内置CSS的HTML静态网页(AMP HTML),禁止掉第三方JavaScript而只用少量特定版本的AMP JavaScript,再加上从Google移动搜索结果里面出来的AMP网页全部都由Google全球CDN网络提供Cache高速缓存(AMP Cache),因此在手机上的网页加载速度,即使在移动网络下,也确实达到了异常之快,闪电秒加载,有效提高访客用户体验。
采用AMP技术的网站加载速度比全站CDN还要快,Google在搜索结果里就开始预加载AMP页面,而且AMP页面本身的元素也已经极度精简。通过Google手机端搜索进入本文后页面的域名都直接变成Google, 比如本文的链接变成:
https://www.google.com/amp/s/tumutanzi.com/archives/15640/amp
使用Google AMP技术的网页本身支持Google Analytics统计,也支持显示AdSense广告。但这种简洁页面的并不是没有代价和缺点:去除了除内容之外的所有其它功能,包括各种JavaScript代码,它甚至可能会有小问题——这项开源技术还在发展中,它的设计目的也不是为了适合所有类型的网站(但非常适合新闻类和博客类等含有静态内容的网站)。这也是有些互动内容较多的网站不愿意使用的原因。
其实我的网站本身足够简洁,对手机的响应式显示也很友好,并且我也用了CloudFlare的CDN加速服务,因此,Google AMP带来移动端的加载速度提升本身并不会太明显。我使用AMP更主要的原因是因为这项技术是Google推出,为了获取AMP下更好的Google搜索排名优点(SEO),启用它应该利大于弊。
由于是Google主推的开源服务,所以国内无法看到Google提供的AMP网页,因为在中国大陆无法使用Google搜索。而我的网站主要的访客都是从Google搜索过来,移动搜索所占比重也越来越多,为了更好的服务这些访客——节省他们的时间,开启Google AMP服务支持也无可厚非。而且,增加AMP支持原来不影响网站原来的任何东西,纯粹加分项。
长期来看,AMP可能只是一个历史过渡期的产物,将来的移动网速只会越来越快,硬件性能也越来越好,网页加载速度也自然跟着提升。不过在目前,我觉得启用AMP还算是拥抱新技术。一万年太久,只争朝夕。
简评ZeroNet分布式P2P网络

除了几年前的比特币,很久没有令我眼前一亮好玩的互联网东西出来了。最近看到月光博客介绍了ZeroNet分布式网络。试玩了一下ZeroNet,觉得这个P2P分布式网络很有意思。
简单地说,ZeroNet就是一个P2P为基础的HTTP分布式互联网世界,网址形式为127.0.0.1后面跟一个比特币钱包地址一样的34位长度字符串,比如:
http://127.0.0.1:43110/1D41D7ybgaDypUV3wJ12NHRdJSL35kLiSJ
虽然没有HTTPS,但我猜测内容本身已经加密,就像比特币的网络系统一样。我一看到ZeroNet网络,感觉这才是真正纯粹的互联网,又或者是早期的互联网模式,代表的是真正的平等、自由、民主、隐私。
与我们平时访问的互联网相比,最大的不同点就在于ZeroNet是去中心化,不需要中心服务器,每个访客都是一个节点,承担存储内容和传输带宽,第三方自然也无法审查删除内容。从这一点上来讲,ZeroNet比CDN式的分布式网络更彻底,CDN不过是把原来的一个中心分散成更多的中心,ZeroNet把内容分布在每一个访客节点上。
听起来和暗网或深网类似,又是一个互联网的法外之地?的确,ZeroNet类似的P2P网络与神秘的暗网一样,它不受政府管制,除非把整个网络摧毁——比特币也是如此。从这个意义上来讲,它能成为技术上保持中立的传播工具。至于人类利用它来干坏事还是好事,那完全是另外的话题——我们只谈技术。
不过,暗网依然需要中心服务器,只不过外界无法知道服务器的具体地址在哪里——也许美国NSA有这个能力,暗网本身并不依赖P2P技术。ZeroNet上的内容发布以后,只要有一定数量的节点存活,发布者节点关闭与否都不再重要,内容已经永久存活在网上,永远可以访问,就像用BT发布内容一样,只要种子成活后,内容就理论上存活在互联网上。
ZeroNet有一个与BitTorrent发布内容不一样的地方,ZeroNet发布的内容可以修改,就像我们现在用的普通网站一样,随时可以修改内容,与之连接的节点也会自动更新。而BT发布后的内容就无法修改了。
易用性方面,ZeroNet和暗网相比不相上下,暗网需要TOR来浏览,要访问ZeroNet网络,直接下载ZeroNet软件,解压后点击即可运行使用,就像VPN一样,运行它后并不影响现行的网络连接,唯独多了一个访问ZeroNet的P2P网络世界功能,并且是全局访问,无论用哪个浏览器都可以访问ZeroNet世界里的网站。
对中国大陆用户来讲,可能还有一点其它的意义,它是一个真正意义上不受监控的网络,配合加密,GFW可能很难对付。ZeroNet虽然依赖于现行的IP地址系统,但它完全与现行的网络平行,也就是说,现行网络上的内容需要有人转移到ZeroNet网络上,ZeroNet上目前的内容很少。ZeroNet也有相应的搜索收录引擎:http://zeroexpose.com/ 目前收录的内容很少。
我在ZeroNet上建立了个站点,不需要主机、域名、流量带宽,连我自己都不需要开机就可提供可访问。如果你已经下载了ZeroNet,应该能访问。否则点击这里使用ZeroNet的网关bit.no.com访问。或者从GitHub下载,目前支持Mac, Linux和Windows, 还不支持移动设备系统。
我不太认为ZeroNet能取代现行的网络架构。现行的万维网架构发明并存在如此长时间,已经被时间证明了它的重要性,但ZeroNet的出现的确令我眼前一亮,至少从技术层面上来讲,我很久没有这样的感觉了。
必须声明,我也是刚接触ZeroNet,以上理解与评价可能有错误,欢迎高手指正补充。
全面进入HTTPS加密时代

新年来临,也有些新变化。在网站方面,我把我所有能换成HTTPS SSL的网站都迁移到了HTTPS SSL——包括我帮忙制作的英国湘味情中餐馆网站,全面加速进入到HTTPS加密时代。
本次升级为HTTPS主要借助于CloudFlare的免费HTTPS证书。由于这些网站也不再使用Media Temple的主机服务,于是改用了更为小众的戈戈主机,流量方面不再宽裕,安全性能方面也不得而知,于是也像土木坛子这个网站一样,启用了CloudFlare的CDN全球加速,再配合HTTPS+HSTS加密,HTTP/2功能也能启用。
因此,使用CloudFlare全球CDN后,可以最大限度提高网站的访问速度,并且节省源主机CSS, JS和图片等静态文件的流量,CloudFlare的反代理DNS能够隐藏源主机IP,进一步提高主机安全性。当然CloudFlare也不是没有缺点,CloudFlare免费CDN下面的HTTPS SSL证书不支持一些过时的浏览器。不过我觉得这些浏览器用户所占比例不大,没有必要迁就他们。
升级到HTTPS后,再到Google网站管理中心更新了一下,很快就收录了新的HTTPS链接。Google对HTTPS的支持力度实在是不一般。
网站加载速度优化技巧

网站速度的重要性不言而喻。如果不是墙的影响,土木坛子目前的加载速度异常快,我在英国加载本网站首页,可以实现500毫秒以内完成加载,半秒钟都不到。
这是如何做到的?采用了什么优化方案?简单来说,我的优化方案和技巧如下,供博客朋友提升网页速度参考使用。
简洁的主题界面
如你所见,土木坛子目前采用WordPress官方主题2012, 禁用了Google字体,除了Google Analytics统计代码,其它全部采用本域名下的资源,包括JS, 图片等静态资源——连Gravatar头像都缓存在本主机上。2012主题是自适应简洁主题,我的首页加载的数量不到10个,这样就能最大限度地减少加载请求等待时间,同时也减少主机服务器开销。
选择SSD硬盘主机
我目前使用的是英国主机QuickHostUK,SSD固态硬盘。固态硬盘存取速度比传统硬盘要快得多,这样可以大大减少访客等待的时间。可以预见,随着SSD硬盘价格不断下降,将来不采用SSD的服务器将被慢慢淘汰。而对网站速度有要求的应优先选择SSD硬盘。
使用缓存机制
本网站由WordPress程序搭建,本来是动态PHP程序按需生成页面。我使用了WP Super Cache插件缓存所有网页。插件在后台生成HTML页面缓存在主机上,避免访客每次访问都要动态生成HTML网页,同时也降低服务器的压力。访客访问网页时,主机就像一台硬盘一样直接给出需要的文件,同时该插件支持GZIP压缩,文件体积压缩后可以减少在网络传输中所需要的时间。
采用先进CDN
我采用了CloudFlare的CDN,它不是普通的CDN。它使用Anycast(任播)技术的DNS全球解析,最大速度减少DNS解析时间。同时CDN技术让访客从全球任何地方都能从最短物理距离的地方加载静态资源:图片,JS, CSS文件(JS文件会优化合并)。而且CloudFlare最近使用了HTTP/2协议,让浏览器不再受限于HTTP并发请求数量,即可以同时加载更多的请求。
总的来说,我使用的优化方案并不复杂,成本预算也不高,但让网站的加载速度得到了极大的优化效果,对主机服务器、访客双方都非常友好。在移动网络时代,性能和网速和PC有线环境有区别,因此网站更应该为访客提供快速的加载访问速度。
CDN升级成收费CloudFlare Pro套餐

从昨天开始,土木坛子启用CloudFlare的收费CDN服务Pro套餐,就当九周岁的一个礼物。
使用收费服务后,好处是可以使用收费的功能。移动设备优化,更快的DNS解析速度(英国只有8 ms)图片压缩加速,更勤快的缓存频率,共享IP的网站数量更少(以前免费账号下面同IP下面甚至有擦边球网站),HTTPS SSL证书支持更多浏览器型号——IE 7也支持了,大部分RSS订阅服务也恢复正常。
应该说,CloudFlare的免费账号提供的功能其实已经够好。我只是觉得不付费,有点占人家便宜的感觉,因为我一直觉得“免费的东西经常是最贵的”,所以我之前在网站下面标注:感谢CloudFlare提供全球CDN加速。现在可以心安理得地去掉这行致谢了。交了保护费后,理论上服务总应该比免费好。
那之前为什么不加入收费套餐?原因是CloudFlare不太合理的收费制度,每个账号下面,第一个域名20美元一个月,第二个是5美元。于是,我忽悠中文博客界的土豪——赖博士加入,然后,我以第二个域名加入,那样就是5美元。
我本来就这么随便一说,没想到,他第二天就炫耀地跟我说,他三个网站都升级到收费的CloudFlare,并且还将我这个提议变成了商机,他说,谁想加入收费的CloudFlare,挂在他的账号下面,他收费10美元什么的,大家共赢……这精明的福建人,难怪成土豪,中文博客界的人生赢家。
结果,我就占了他便宜,也升级到CloudFlare收费的CDN,赖博士说:高大上。至少,在被ICDSoft踢出后,土木坛子也只能找CDN才能维持下去。
现在土木坛子在网站上每年的投入资金也不小,每个月20多美元的主机费,再加上域名、SSL证书费用,现在又用上收费的CDN。在我还有钱把它撑下去时,尽力撑下去。
赖博士说,为兴趣爱好花这点钱,比上红灯区嫖强多了,说得他好像干过那事似的……话糙理不糙,坚持写博客的男人都是好男人,那写博客的女人呢?至少能找到好男人吧。
CloudFlare CDN使用经验和技巧

以前用过国产的CDN(content delivery network, 内容分发网络),效果不佳,很长一段时间对CDN失去兴趣。后来用了Incapsula的CDN,也没有什么印象。最近用上CloudFlare的CDN,感觉还不错。和我同样用MT主机的佐仔最近也加入了CloudFlare的阵营,中文博客界VPS最高配置的赖博士更是把他中文和英文网站都用上CloudFlare的CDN。
他们问我有哪些CloudFlare设置经验技巧?我觉得CloudFlare的设置很人性化,注册按提示操作很快就可以实现全部配置,简单到可以用默认的设置即可,不过,我还是有一些个人觉得比较好的配置:
- DNS选项:DNS Records里面将泛解析去掉(如果有的话),只留下CloudFlare“云朵”保护下的A解析和CName解析(我这里的解析速度快到只有11 ms),彻底隐藏网站的源IP,对防DDoS攻击有一点点好处。DNS分配的IP通常有2个,CloudFlare使用了Anycast和Nginx反向代理技术,实际上CDN加速时,会自动分配最近的数据中心,https://tumutanzi.com/cdn-cgi/trace 可以查看浏览器联系的数据中心(colo值对应相应的数据中心)。
- Crypto选项:我启用了SSL (with SPDY) Strict(我的网站本身有SSL),意思是CloudFlare的服务器和我的主机之间的通信也需要SSL加密,然后我还启用了HTTP Strict Transport Security (HSTS),并开启里面的所有附加选项。
- Speed选项:Auto Minify里选择Gzip压缩CSS, JS和HTML三个选项,减少网页传输流量大小。Rocket Loader™,进一步合并优化JS代码异步加载,我选择Automatic。这个功能因人而异,需要自己测试,如果对网页加载有影响的话就不要启用,毕竟是BETA功能。
- Firewall选项:Security Level我使用了高级High。
- Caching选项:Browser Cache Expiration我选择了一年的有效期。
- ScrapeShield选项:Email Address Obfuscation启用,保护网页上出现的邮箱名不被机器人扫描。
总体来讲,我认为CloudFlare不仅仅是CDN,还有一些网页优化、安全防护的功能,并且都是免费用户就可以享用。用上CloudFlare后,我的源主机几乎看不到网站资源消耗,连流量都节省了60%以上,统计显示,最近7天来,总流量10.31 GB,缓存化的流量达6.72 GB,挡住了285个有害威胁(主要来自中国)。
发现了一个小伎俩,和我几乎相同软件和硬件配置的佐仔说,无论如何都配置不好CloudFlare的HTTPS SSL,总是出现502错误,我重新购买了SSL证书亲自试验了一下,发现重新注册一个CloudFlare账号就解决了问题,CloudFlare似乎对免费账号的SSL功能有所保留,也可能是BUG,百撕不得骑姐。
我对赖博士说,如果不考虑中国大陆的访问速度,我目前还找不到理由不用CloudFlare的CDN。当然,也可能正是这条理由,大部分中文网站不太可能拥抱CloudFlare的CDN。
本博客RSS源可能无法更新
更新(2015年7月27日):因升级采用了CloudFlare的收费CDN服务,现在原生RSS应该全部恢复正常。
在其它RSS订阅服务中发现,除了Feedly和Inoreader两个服务外,土木坛子的RSS源在大部分订阅中失效了,比如AOL Reader和NewsZeit之类的订阅器。Feed Validator测试发现,本博客的RSS地址无法通过。
我估计原因,在于我使用了CDN,而CloudFlare的CDN又存在反代理,导致RSS订阅服务读取土木坛子的RSS源时,CloudFlare会拒绝访问部分User Agent的请求,从而造成RSS更新失败,甚至让人误以为本网站停止更新。
我试图用白名单的办法让Feed地址取消缓存加速,但发现也无法解决问题。为了保证网站的安全,我目前必须要使用CDN,所以Feed在大部分RSS订阅中无法获取更新的问题暂时无法解决。
我一直主张提供RSS功能,并支持全文输出,是为了让人们更高效自由地获取管理信息。这次看来无能为力、爱莫能助。虽然我没有义务解决,但还是给受到影响的朋友说声:抱歉。
更新(2015年7月18日):一个目前可行的办法是用Google的FeedBurner烧录地址 https://feeds.feedburner.com/tumutanzi 但不知Google将来会不会关闭这个项目。或者点击这里采用邮件订阅——如果你愿意的话。
再也不见,ICDSoft
前两天被DDoS攻击,然后被香港ICDSoft清理出户。我试图恢复ICDSoft的账号,但是ICDSoft客服表示,这是他们的最终决定,必须终止对我的服务,并把余下的付款退给我。
鉴于最近,有包括我在内至少三个ICDSoft客户遭遇如此情况,我有理由猜测,很可能是某些恶劣的主机同行,使用这样的手段,打压ICDSoft。我以前还以为ICDSoft能抵抗DDoS攻击呢。
土木坛子现在总算恢复过来了。目前,网站存在于美国Media Temple主机,并使用了CloudFlare的CDN服务,希望目前的这个方案能继续存活下去。这个方案的缺点很明显,除了WP Super Cache缓存有问题外,CloudFlare的CDN在国内的访问情况会有不少问题,有的地方会很慢,甚至有的地方根本就无法解析网站的IP。
还有,IE 9以下的浏览器无法浏览土木坛子了,因为Media Temple和CloudFlare的SSL都是基于SNI,IE 9以下不支持。我看了一下网站统计,IE 9以下的用户数量极少(< 1%),毕竟能访问土木坛子的网民,与IE 9以下的浏览器还是交集较少(更新:据说是Windows XP系统下的IE浏览器不支持: SNI in Internet Explorer depends upon the SChannel system component shipped with Windows Vista. 但Windows XP下的Firefox浏览器支持)。
我目前没有其它更好的办法,让土木坛子存活于自由的互联网上,是首要任务。
Leonax博友炫耀式地写了一篇博文,批评了ICDSoft的这个政策。我把这个链接丢给了ICDSoft的客服,好歹也算与它再见时,反馈一点信息。客服回复我,解释了他们为什么需要这样做:
Thank you for the input. We had to run an automated translation on the text, as we do not speak Chinese.
We are sorry, but we offer shared hosting service. This means that we host multiple customers on a single machine. We cannot allow the service for all customers on the shared machine to be down in case of possible future DDoS attacks. Such attacks are a problem for any online businesses, and we, like any other provider, strive to contain such attacks, minimizing their effects. However, some attacks are extremely severe, and there is not much we can do to fight them effectively.
试用Google牌CDN: Google PageSpeed Service

Update: Google 2015年8月3日要关闭这个免费服务了,以下是公告原文:
On July 28, 2011 we announced PageSpeed Service, an online service to automatically speed up web pages. In the last 4½ years, PSS has delivered millions of pages for thousands of sites, all for free. While a number of sites continue to enjoy the benefits of PageSpeed Service, we see much broader adoption of PageSpeed technology through our open-source products and have therefore decided to focus our efforts on improving those.
收到上海七牛公司的第一笔企业捐赠
七牛公司市场部副总李婧女士
昨天收到一笔人民币500元的捐赠,备注信息为:“七牛捐赠公益”。一查询捐赠人,她是上海七牛云存储公司的市场部副总李婧女士,长得很甜美。和七牛公司的工作人员确认后,对方说这笔捐赠确实是以他们公司名义作出的捐赠。
如此说来,这是我正在进行的公益活动收到的第一笔企业捐赠。感谢七牛公司对我的信任,对这个活动的认可。我当初真没有想到有这么热心人士关注、支持、参与我发起的这个小活动。应该说,把钱捐给我这个小公益活动,并不能带给七牛公司什么直接好处。我不像红十字会等官方机构,捐赠后可以宣扬公司的名字,树立一个好的企业形象。我这里什么也没有,而且我在捐给孩子们的物品上,也不留下与捐赠者和我本人相关的任何信息,因为我觉得这不重要,更不必要。我只负责用好捐赠者们的爱心。
我没有向任何人强行劝捐,更没有向那些企业老板等人物募捐过。的确,任何一家像样的企业如果愿意捐赠,数目会比个人的捐赠大得多,但我不会这样做,一来募捐要靠自愿,强劝失去意义。二来,企业合法赚的钱不代表就一定要捐出。收到的捐赠金额大,可以办大事,金额小就办小事,这个公益活动也不是救火救灾。最关键的一点,这个活动收集的是大家的爱心,只要是爱心,一元和100元的本质是一样的。
也许有人会问,为什么七牛云存储公司会捐赠我的公益活动?凡事皆有原因。我前几天写过一篇博文推荐七牛的CDN云存储服务,我写完后也觉得像软文,但的确是发自真心的推荐。不是我不支持民族国产货,而是大多数时候民族国产货对不起我的支持。在那篇博文的后面,有人留言问我收了多少钱,我当时说是零。
其实,七牛官方在看到我的博文后,确实问过我要多少报酬,我回复说:我写这个不是为了要他们的钱。就婉拒了。拿人手短,合乎人情。后来他们的工作人员可能了解到,我还在从事一点所谓的公益活动,估计就报告给了公司的负责人。然后,我就收到了这500元企业捐赠。
和七牛公司的联系记录
你说这是软文吗?我不认为,我只是推荐我认为值得推荐的东西,如果它不好,我也会挑刺。你说我没有收钱吗?我现在也不能说没有收。再次感谢七牛公司捐赠500元资助我小学母校的孩子们。
另外提一位捐赠者,也是昨天的事情,来自内蒙古赤峰的吕冬锋女士,当她知道我的这个事情后,特意委托她在比利时的女儿捐赠60欧元现金(约500元人民币)。重要的不是这60欧元,而是这份爱心。
P.S. 七牛云存储公司简介:
七牛云存储由国内存储行业的领军人物之一许式伟于2011年创立,致力于提供最适合开发者的数据在线托管、传输加速以及云端处理的服务。
七牛云存储的核心团队成员来自于盛大、金山、网龙、惠普等知名互联网公司。核心成员之间已合作多年。公司创始人许式伟先生曾在金山、百度和盛大等公司担任重要领导岗位,具有多年存储行业实战经验,被誉为国内最适合做云存储的几人之一。
区别于国内外其他云存储,七牛自行研发的全分布式架构解决了其他云存储单一数据中心架构可能存在的风险,同时首创双向加速特性对数据上传下载均加速,使得数据访问速度较传统方案平均提升50%以上。此外,镜像存储、客户端直传、断点续上传、云端富媒体处理等七牛云存储独有的功能也大大提升了开发效率,最大程度减少了服务器资源浪费。
目前,七牛已经为大量移动互联网,web2.0, 媒体,电商以及游戏等领域的知名企业提供了全方位的解决方案与服务。