前阵子打Codeforces(以下简称CF),每次比赛的时候都要等待网页刷新。不是我这里网速慢,应该是国内的普遍现象吧。然而最狼狈的一次,当我刷新出题目页面的时候比赛已经开始5分钟了,这让我很苦恼。我也曾经使用过代理超人,访问加速了一些,然而我每次都必须在比赛前寻找和测试当天最新的国外高匿代理。虽然写了个程序可以从网页上自动提取当日可用代理IP,但验证上千个IP也需要数分钟的时间(即使线程开到100),况且可以刷新网页而不给你断网的服务器太少了(一般比赛前网络通信正常,然而比赛开始时再次刷新网页的时候代理服务器就罢工了)。
后来,由于稳定性无法保证,我放弃了代理。我在尝试分析CF网页的过程中找到了一行代码:
<link href=\'//fonts.googleapis.com/css?family=Cuprum&subset=latin,cyrillic\' rel=\'stylesheet\' type=\'text/css\'>
这行代码意味着CF使用了谷歌字体库(国内大部分网段对谷歌服务器的访问速度都比较慢,有时甚至无法连接。从今年六月开始,国内WordPress的站长们也陆续将谷歌字体库本地化或使用国内镜像),并在完整加载字体后才能显示全部网页内容,否则已经加载出来的内容也不予显示。
好,问题找到了,现在要解决这个问题。最简单的办法就是在浏览器刷新网页的时候直接查看已经从CF服务器下载的代码,这个在Chrome中十分常容易办到的,但却不方便。
经过几分钟的思考,我打算重定向谷歌服务器。查看过一些网上的资料后,我发现多数寻求解决方案的是WordPress的站长,他们的解决办法比较复杂,而且是针对服务端的。虽然我不能把这些方案推荐给CF(即使可以,也只有中国地区可用),但是我发现了一个很好的谷歌字体库的镜像。
这个镜像是360提供的(http://libs.useso.com/),而且国内普遍反映该服务器稳定性和速度均较好。接下来的问题就是把360的镜像字体库“嫁接”到原谷歌字体库上。一个最简单的办法就是修改HOSTS文件(虽然我一般不主张动这个文件,但是像这种永久有效的服务器必要时是可以使用的)。
首先找到360镜像字体库的IP(183.136.133.218),然后加入HOSTS即可。具体操作步骤如下(Windows用户):
1.在资源管理器的地址栏中填写“%SystemRoot%\System32\drivers\etc”并进入。
2.右键单击“HOSTS”文件,选择“属性”,确保“只读”未被勾选。
3.双击HOSTS,选择记事本打开,在最后添加以下两行(第二行的“fonts.gstatic.com”是CF有时会选取的另一个谷歌字体库服务器,我在分析代码时发现的):
【注意:IP与域名之间不是空格,而是制表符(\'\t\'),按tab键可输入】
也就是打开systm32\drivers\etc,里面有个hosts文件,没有后缀名,用记事本打开就行,然后就在在下面添加这两行
183.136.133.218 fonts.googleapis.com
183.136.133.218 fonts.gstatic.com
然后保存就好了。
4.保存HOSTS文件。
183.136.133.218 fonts.googleapis.com
183.136.133.218 fonts.gstatic.com
然后保存就好了。
4.保存HOSTS文件。
OK,就是这样了,你现在再上CF是不是感到前所未有的流畅啊?