为了防止隐私浏览模式中的第三方数据泄露,Firefox 将从 Firefox 59
开始在隐私浏览模式中移除第三方引用链接中的路径信息。从技术角度讲,就是启用
strict-origin-when-cross-origin 策略。

澳门新葡亰游戏网址 1

澳门新葡亰游戏网址 2

Firefox 在文章中表示,当你在某个网站上点击另一个网站的链接时,新网站将通过所谓的“引荐来源值“(Referrer
value),收到你之前所在的网站的确切地址。比如:

比较浏览器性能的通用方法

在比较不同浏览器的性能时,最重要的一条就是选择一些性能指标。通常,这些指标都来自标准化的Web
API。关于性能比较, 可以使用Navigation
Timing(导航计时),它是一个可以在web中精确测量性能的javascript
API。这个API提供了一个简单的方法来获得页面导航、加载事件的精确而又详细的时间状态。需要注意的是,Navigation
Timing的目的是用于分析页面整体性能指标。如果要获取个别资源(例如JS、图片)的性能指标,请使用Resource
Timing API。

这些用户数据会泄漏到新网站,告诉网站你点击链接时正在查看的具体页面。更糟的是,浏览器在请求子资源(例如广告)或集成的其他社交媒体功能时,也会发送
referrer 值。换句话说,该网站嵌入的内容商也会知道你正在访问的页面。

本文会把讨论重点放在基于Navigation Timing API的性能比较上。

为了避免用户信息泄漏,Firefox 59
的隐私浏览模式将移除这些来源链接中的路径信息。使用正常浏览模式的用户也可以通过修改设置启用该功能。

选择测试指标并对测试进行设计

(文/开源中国)    

除了明确定义测试指标之外,还需要选择有意义的测试内容。基于技术方面的准则和比较,我选择了一组具有技术难度都比较高的网站。在我的测试中,我比较关注的是用户的感受,因此找的样本还必须是用户在平时生活中常用的网站。在我的研究中,我关注的是全球排名前200的新闻网站(以Alexa网站的排名作为参考),因为这些网站往往关注度较高。这些网站会在正常浏览模式和隐身浏览模式下分别在Chrome
v61.0.3163.100和Firefox Quantum Beta
v57.0b10两个浏览器中进行加载,其中Firefox Quantum启用了Tracking
Protection功能,该功能能够自动拦截网页内的广告、追踪不良插件等等。为了让比较更具可信性,每个网站在每个浏览器上都对被加载了10次。

澳门新葡亰游戏网址,现在测试指标和网站样本都选好了,可以开始运行测试了。

用Selenium WebDriver工具控制测试进程

由于进行测试和收集数据的过程很复杂,如果用人工进行比较,则很容易出错。因此,如果条件允许,我建议采用自动化测试。更重要的是,这个测试工具还得在不同的浏览器的运行环境下都有效。因此,既可以使用像Mozilla的Hasal项目这样的外部脚本应用程序,也可以使用像Selenium
WebDriver这样的浏览器自动化框架。Selenium 和 WebDriver
原来是两个独立的工具,后来合并成了一个工具——Selenium
WebDriver,现在它是一个用来进行复杂重复的web自动化测试的工具。

我的页面加载测试是基于Python脚本,该脚本使用了Selenium Python
bindings,分别通过geckodriver和chromedriver来控制浏览器。这个脚本类似于在Chrome和Firefox中加载一组网站并且在每次加载之后存储window.performance.timing,这意味着每次加载后的时间都可以在其中找到。不过它的性能目前还不是很完美,还有进一步地改善空间。

最近我在Macbook Pro(13版Macbook Pro 2017,3.1 ghz i5,16GB内存,OSX
10.13)上进行了以上的测试,通过与WiFi(802.11 ac,867Mbit / s)上的Webpass
100Mbps进行连接。以上的脚本在其中一个浏览器中加载了一个网站,并通过将返回的window.performance.timing作为csv文件,来保存性能加载时间。要说明的是,每个网站在每个浏览器中都被加载了10次。在脚本中,对页面的加载超时设置为60秒。如果网站上有广告,则页面加载速度极慢。在我的测试中,如果脚本在60秒后还未被加载,则页面的加载过程就会被中断。该脚本会使用PerformanceTimingAPI来检查loadEventEnd是否已经存在。PerformanceTiming
接口包含了当前页面中与时间相关的信息。可以通过只读属性Performance.timing
获得实现该接口的一个对象。浏览器新提供的performance接口精确的告诉我们当访问一个网站页面时当前网页每个处理阶段的精确时间(timestamp),以方便我进行前端分析。

它是浏览器的直接实现,比之前在网页中用js设置Date.time或者cookie来分析网页时间上要精确很多。

loadEventEnd表示了请求页面的加载事件完成时的时间点,即页面的所有静态内容都已全部被加载。如果保存了一个loadEventEnd时间,那么它就会被存储在csv文件中,如果loadEventEnd时间没有被保存,则脚本会尝试重新加载相应的页面。在个别情况下,当重新加载请求超时时,页面会被手动加载而不会进行任何自动超时设置。在页面被完全加载后,手动请求window.performance.timing。

测试结果分析

如果愿意,你可以点此链接来查看有关这个测试的所有原始数据。

网站地图xml地图