【发布时间】:2018-01-20 05:07:19
【问题描述】:
上下文:我将解释这个问题的上下文,但我认为这个问题的答案不是很具体。
我有一个 chrome 的背景页面,一个 chrome 扩展。该页面执行以下操作:
chrome.commands.onCommand.addListener(function(){
chrome.windows.create({
url:"page.html",
type:'popup'
});
});
如您所见,当用户触发命令(通过使用热键)时,这会创建一个新窗口,从我的扩展程序中加载 page.html 文件。
page.html 页面是一个相当重的页面。它运行一堆脚本(都来自扩展目录)和一堆图像(也都来自扩展目录)。
上下文要点:这里重要的是页面完全在本地加载。没有任何东西(直到用户输入)调用互联网,当我离线时它加载得很好。
问题:
- 当我通过触发事件加载窗口时,如上所述,加载需要一些时间,假设可能是 1.5 秒。如果我然后刷新新窗口(page.html),它会在不到 0.5 秒的时间内加载。造成这种时间差异的原因是什么?
- 如何利用更快的刷新率来加快初始页面加载速度?我可以以某种方式加载隐藏版本吗?或者以某种方式预渲染它?任何建议都将不胜感激。
【问题讨论】:
-
当您刷新页面时,您不需要再次抓取所有内容。许多占用大量加载时间的图像可以保留。在任何网站上尝试。刷新总是比打开新网页快
-
这并不能解释所有内容都在本地文件夹中的情况。
-
我假设的本地文件夹在被调用之前不在 RAM 中。因此,即使不涉及网络,将图像从硬盘加载到 RAM 也比图像已经在 RAM 中花费更多的时间。我假设 chrome 也做了一些偷偷摸摸的东西与缓存以及其他技巧,以使页面加载更快
-
嗯,其中一部分将是在内存中创建窗口对象的开销(chrome [表示窗口边框、大小调整器等]、渲染引擎等)。重新加载时不需要发生这种情况。
-
在 Windows 系统上评估加载或重新加载的速度是幻想,因为船长是其他一切(Windows 8 ,81,10),而不是您感兴趣的应用程序。所以即使您也会出现随机延迟禁用正常或以某种方式禁用:Windows 防火墙、Defender 等将在您的 Chrome 之外出现延迟。我认为其他操作系统也发生了类似的事情。在我的系统上,微软强制执行了几件事情被禁用,我可以复制你的情况(无法解释的延迟)计算解析执行时间微秒的 php 脚本。我有类似的结果
标签: javascript html google-chrome page-refresh