我在一个Web应用程序上工作,其中dev环境从本地Web服务器加载大约500个js文件(我已经尝试过IIS和apache)。这些文件在prod中进行了优化,但对于我们所拥有的开发。我知道还有其他战略选项可能会阻止加载这么多js文件的需要,但这目前不在我手中。我想做的是加快这些要求。我是否疯狂地认为这些请求中的每一个只需要10ms,因此整个请求可能需要5s(10ms * 500个请求)?目前,chrome和firefox都报告这些请求大约需要100毫秒(即使是304秒)。
我把它归结为最小的公分母并创建了1行js文件。我通过firefox和chrome向此文件发出请求,并且每个报告都需要> 100毫秒。但奇怪的是,当我从curl发出相同的请求时,它只需要5ms-ish:
$ curl 'http://10.222.139.56:81/js/ben.js' -o /dev/null -w '%{time_total}'
0.005
是什么给出的?我认为卷曲数字是正确的吗?为什么chrome和firefox需要更长时间?
答案 0 :(得分:2)
我的猜测是,对于Firefox和Chrome加载的每个js文件,报告的时间包括文件的浏览器解析,缓存等。即使是单行文件也只需要处理少量工作。 另一方面,curl只是拉下内容并保存到磁盘或标准输出。那个操作要快得多。
答案 1 :(得分:1)
对我来说答案很简单:cookies。
在单个json文件上作为" Content-Type:application / json",Chrome的网络标签始终显示~1400ms,而curl是~300ms(即使使用浏览器User-Agent组)。浏览器应该没有必要解析这个,因为我禁用了漂亮的打印插件,并且已经禁用了缓存"在Chrome的开发工具中查看。
最后,我在一个隐身窗口中尝试了它,并看到了与Curl相同的结果。然后我回到原来的窗口并删除了cookie,没有别的,并且获得了相同的速度提升。我终于意识到我的Web应用程序在对另一个验证它的服务的请求中使用了特定的身份验证cookie。