使用HTML5 prefetch存在的危险?

6

好的,目前只有少数浏览器支持预获取功能,因此还不是什么大问题:

  • 火狐浏览器:支持
  • 谷歌浏览器:自版本13后支持(请使用替代语法)
  • Safari浏览器:当前不支持
  • IE浏览器:当前不支持

然而,预获取功能让我感到不安。如果用户从您的页面跳转到另一个站点,您是否为他们访问预获取链接所支付的带宽付费了呢?

开发人员是否可能会对页面上的每个链接进行预取操作,进而降低用户的网站体验速度?

预取功能似乎会改变分析结果,是否会有人通过预取功能向用户强制推送页面浏览量?

安全性问题,您无法知道哪些页面被预取。它是否会预取恶意文件?

所有这些预取操作是否会给使用流量有限的移动用户带来麻烦?

2个回答

8
我并不是这方面的专家,但我能做出以下观察:
  1. 只有在已知会有好处的情况下才应考虑使用预取。将预取应用于所有内容都是愚蠢的。这实际上是服务器负载与用户体验之间的平衡。

  2. 我没有研究过HTML5预取规范,但我想他们已经指定了一个头部声明:“此请求是作为预取的一部分执行的”,这可以用来解决分析问题——即“如果这是一个预取,请不要将其包含在分析统计数据中”。

  3. 从安全角度考虑,人们期望预取遵循Ajax所遵循的跨域规则。这将减轻任何XSS成为问题的情况。

  4. 支持HTML5预取的移动浏览器应该足够智能,在使用WiFi时打开它,在使用潜在昂贵或缓慢的网络连接(例如2G / 3G)时关闭它。
正如我所说的,我不能保证以上任何事情,但(像任何技术一样)这是最佳实践的情况。您不会使用Cache-Control强制缓存网站上的每个页面一年。您也不希望浏览器满足跨域Ajax请求。希望预取也将考虑同样的问题。

谢谢,这是一个令人放心的答案,尽管第一点仍然让我感到有些不安。我肯定会看到滥用的情况 :( - DBUK
1
我不会感到惊讶,如果浏览器开始允许您指定策略,覆盖站点预取代码的规定。 - Polynomial
2
确认第二点:Chrome确实添加了“Purpose: prefetch”头,我认为其他浏览器也会实现相同的功能。 - Scott Rippey
Firefox还会添加一个头部来指示预取请求:X-moz: prefetch - François Marier
4
根据MDN的说法,预取不遵循同源策略,并且实际上可以缓存来自不同域的资源。 - François Marier

1

回答有关分析和统计的问题,规范指出:

为确保兼容性并提高预渲染请求的成功率,目标页面可以使用 [PAGE-VISIBILITY] 来确定页面在呈现时的可见性状态,并实现适当的逻辑,避免可能导致预渲染被放弃(例如非幂等请求)或触发不需要的副作用(例如在页面显示之前触发分析 beacon)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接