截图中,页面最上方的红条大家是不是很熟悉呐,来到这里的同学想必都深受其苦,我也是。常常是点开一个 stackoverflow 的链接,先去干点别的,过一分钟再来看,影响工作效率。这个 js 异常甚至影响到了部分功能的使用了,比如 comment 多的时候,show more comments 这个功能就使用不了。
搜罗了一圈的解决方案,要么限制了必须使用 firefox,虽然它是我第二喜欢的浏览器,以前也陪伴过我很长一段时间,但是为了这个问题而强行切换浏览器,我不愿意;要么就是依赖第三方的服务,担心安全隐患的问题,也不想采用。那么还有没有办法优雅地打开 stackoverflow 了啊?当然是有的。
*速查的同学可以直接跳到最后看操作总结
原因可能也都知道,简单说一下。 stackoverflow.com 的 jQuery 文件是引用了 ajax.googleapis.com,而 google 在本朝是众所周知的。在尝试加载 jQuery 这段时间里,stackoverflow.com 是展现不出来的,于是就造成“打开慢”的直观感受。
原因了解了,就好办了。不就是 jQuery 吗,不用劳烦google,我们本地提供就好。再通过修改hosts,把 ajax.googleapis.com 解析到本地服务器。嗯,理论上可行。Let's do it!
于是我们需要一个 http server。这选择就很多了。apache? nginx? 当然可以,但我们只是要放一个静态的 js 文件而已,不需用牛刀。还有更优雅的解决方案,那就是 python 的 SimpleHTTPServer。是的,只需要一行命令:
sudo python -m SimpleHTTPServer 80
sudo 是因为我们映射的是80端口,1024以下的端口需要 root 权限
python的安装略过不提,如果是 mac, 自带的就够用。
那么应该在哪里运行这个命令呢?验证了一下 SimpleHTTPServer 的根目录就是运行命令所在的目录,根据我们的需求,应该使这个目录结构和 ajax.googleapis.com 上的一致。
看一眼完整的路径
http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
所以我们的目录结构组织成
<webroot>/ajax/libs/jquery/1.7.1/jquery.min.js
jquery.min.js 的获取也略过,注意文件名要完全相同
当然 webroot 可以换成更有意义的名字比如 stackoverflow-jQuery。
打开浏览器测试一下
http://127.0.0.1/ajax/libs/jquery/1.7.1/jquery.min.js
嗯,看起来特别亲切。
还差最后一步,修改hosts。
vi /etc/hosts
最后添加一行
127.0.0.1 ajax.googleapis.com
!wq保存,妥啦。
赶紧试试访问 stackoverflow.com 吧!
操作步骤总结
1、组织好本地目录和文件,如下
<webroot>/ajax/libs/jquery/1.7.1/jquery.min.js
2、打开终端,在<webroot>目录中运行
sudo python -m SimpleHTTPServer 80
3、修改 hosts,增加一行
127.0.0.1 ajax.googleapis.com
THE END
本文提到的方法随着时间的推移环境的变化很有可能不再有效,但是当前(2016.5.3)是可行的。也作为一种探索记录和开阔思路。
国际惯例,转载注明来源:http://www.jianshu.com/p/40715dcac309
参考:
stackoverflow 打开缓慢,这个问题怎么破? (from 知乎)
Best lightweight web server (only static content) for windows [closed] (from stackoverflow)
不能绑定到端口号:80;原因:Permission denied (from csdn)
网友评论