哈喽!你这堆代码看着有点眼花啊... 是想问网页加载这些东西有啥问题吗?还是想知道怎么改代码?
上周有个客人问我,为啥他网站加载那么慢,我一看,跟这似的,一堆 script 标签堆在那里。
后来我给他调了,把非关键的 script 放到页面底部,还用了 async 或者 defer 属性,速度立马快了。

你这代码里全是百度知道问答页的脚本,还有百度统计的代码,还有 IE 提示框... 咱是想知道这网页是干嘛的?还是想改代码?说吧,我帮你看看。

代码内容太多,看不懂,直接说结论: 这堆代码是百度知道网站的JavaScript和资源加载脚本。

具体分析: 1 . 包含多个模块的加载,如common-new:widget、common-new:js等。
2 . 使用了jQuery库。
3 . 包含百度统计代码。
4 . 有异步加载模块的代码。
5 . 有检测用户浏览器是否支持HTTPS的代码。

你自己掂量。

理解virt、res、shr之间的关系(linux系统篇)

记得有一次,我帮朋友调试一个Java程序,他在使用top命令查看进程时,对VIRT、RES、SHR这些参数感到困惑。
当时我拿了一杯咖啡,边喝边解释,就像现在这样,用小事带道理。

我打开他的电脑,top命令行显示的那个界面,我指着VIRT说:“这个VIRT就像是个巨大的超市,你朋友写的程序就像是个购物车,装满了各种虚拟的东西,有货架上直接拿的,也有还没付款的。

然后我继续解释RES:“而RES就像是超市里付款后留在手推车里的商品,这些都是实实在在的,已经支付过费用的。

朋友点点头,我又拿起咖啡杯:“那么SHR呢,这就好比是超市里共享的促销品,几个购物车里的顾客都可以用,不会算在单个购物车里的费用。

接着我打开一个例子,显示了一个进程的内存使用情况:“你看,VIRT是1 .5 G,但RES只有3 00M,这说明程序虚拟的内存很大,但实际只使用了3 00M。
SHR是1 00M,说明有共享的部分。

朋友听了,若有所思:“哦,明白了,VIRT是总的,RES是实际的,SHR是共享的。

我喝了一口咖啡,突然想到:“等等,还有个事,记得有一次我调试另一个程序,VIRT和RES的数值差很大,当时我还以为程序出了问题,后来才发现是因为共享库的优化。

朋友听后笑了笑:“原来如此,那我现在明白了,以后看进程内存占用,就知道怎么分析了。

我放下杯子,随便说了句:“嗯,这样就好,记得分析的时候,要结合具体情况哦。