我很久以前就设计了一个想法并且从来没有实现它,我想知道它是否实用,它可以显着减少现代浏览器的加载时间。它依赖于以下事实:相关任务通常在批量完成时更快地完成,并且浏览器可以使用统计模型在不同页面上下载内容,而不是在用户浏览时空闲。我在下面摘录了我最初写的内容,其中描述了这个想法。
当人们访问网站时,我 猜想那个概率 密度函数P(q,t),其中q是a 表示的实数整数 网站的ID和t是另一个 实值,非负整数 代表一天的时间,可以 预测网页的顺序 由典型的人访问 准确到足以保证 请求和加载HTML 用户将要读入的文档 预先。对于一个给定的网站,有 文件似乎是“主要的 网页“通过哪个网站 用户访问其他部分 由树的根代表 结构体。概率 用户将访问该根节点 树可以用两种方式表示。 如果用户希望允许进程 自动执行 初始化操作系统 预先从网站上获取网页 (使用后面详述的流程) 用户经常访问 在打开网络浏览器时, 确定的概率函数 一个给定的网站是否会有它的 可以确定预取的网页 使用自适应启发式模型 根据用户的历史记录(或通过 手动输入)。否则,如果没有这样的话 用户期望过程, 根节点的P值是 无关紧要,因为预取 进程仅在用户之后使用 访问网站的主页。
前面描述的树中的孩子 每个都与个人相关联 概率函数P(q,t)(这个 函数可以是查找表 存储时间网页对)。就这样 用户访问的网页序列 使用此树记录随时间的变化 结构体。例如,上午7点, 我可能有71/80的机会 访问Reddit上的“WTF”部分 加载主页后 现场。基于的价值观 p为H.每个节点的可执行功能P. 在树上,网页链 延伸一定深度 根节点所在的净概率 遵循每个序列,P_c, 超过某个阈值,P_min, 在用户访问时请求 该网站的主页。如果 一个网页的下载完成 在另一个处理之前,a 线程池用于另一个 核心被分配了解析任务 队列中的下一个网页 要解析的网页。希望,在 这种方式,很大一部分 用户点击的网页可能是 显示比他们快得多 不会这样。
我遗漏了许多细节和优化,因为我只想简单描述一下我的想法。非常感谢你花时间阅读这篇文章;如果你有任何问题,请随时提出任何问题。
答案 0 :(得分:9)
有趣的想法 - 虽然没有你提出的大脑,但是已经有一些在浏览器中预取的实现 - 这可能会有所帮助。我认为这个计划存在一些缺陷:
a)在大多数情况下,网页浏览对于大多数用途来说足够快 b)带宽正在变得计量 - 如果我只是浏览主页,我作为用户想要付费来服务其他页面。此外,在这类事物可能有用的情况下(例如 - 慢速3g连接),带宽往往更加紧密。并且可能不太擅长并发(例如 - CDMA 3g连接) c)从服务器运营商的角度来看,在大多数情况下,我宁愿只提供请求的页面。渲染无法看到的页面会花费我的周期和带宽。如果您喜欢很多人并且在某些云计算平台上,那么您需要按周期和字节付费 d)需要重新构建大量的分析系统,其中许多仍然依据请求理论运行==印象
或者,简短的总结是,确实没有必要预先监视人们为了加速服务和呈现页面而查看的内容。现在,像这样的东西可能真的有用的地方将是“嘿,如果你喜欢X你可能喜欢Y”然后弹出链接等所述内容(或产品)给人们。
答案 1 :(得分:1)
Windows对磁盘访问做了同样的事情 - 它“知道”你可能会在某个时间开始让Firefox说它并加载它。
SuperFetch还会跟踪这些应用程序的使用时间,从而可以智能地预加载预计在不久的将来使用的信息。
http://en.wikipedia.org/wiki/Windows_Vista_I/O_technologies#SuperFetch
答案 2 :(得分:0)
指出做类似事情的现有技术:
您的提案归结为预测用户最有可能点击下一个当前网站和当前时间的位置。我可以想到在这里发挥作用的其他一些因素: