子资源完整性和性能

时间:2016-03-18 20:45:30

标签: subresource-integrity

我正在阅读Subresource Integrity,但我担心性能下降。这个(在执行它之前必须对每个文件进行散列)是如何减慢页面加载的,尤其是在CPU级别较低的设备上?

2 个答案:

答案 0 :(得分:1)

如何......? - 它使用CPU来计算哈希值 多少? - 根据CPU和资源大小等进行测量 但是...... - 对于性能,您可以尝试组合并最小化资源,并使用较少CPU密集的哈希算法。

不要担心,快乐!

答案 1 :(得分:0)

我今天运行了性能基准测试,并在为120KB Twitter Bootstrap缩小的CSS文件生成哈希时观察到以下平均值。

File Size: 121200
SHA1   Time: 0.50199 ms
SHA256 Time: 0.89691 ms
SHA384 Time: 1.59249 ms
SHA512 Time: 1.58901 ms

SHA1被认为是不安全的,可能无效。因此,如果使用SHA256,则可以预期公共设备上每个资源的总延迟小于1 ms。我在我的一年半的Corei5华硕笔记本电脑上运行了这个基准测试,但是性能不是很好。此外,120KB略高于平均水平。大多数静态文件较小,较小的文件大小意味着更快的哈希生成。

基于这些基准,如果我权衡使用SRI的好处与每个资源1ms的成本,我宁愿使用SRI,因为成本几乎可以忽略不计。正如您在评论中所说,黑客进入大型CDN提供商服务器的变化是不可忽视的。我会指向一个past incident of BootstrapCDN黑客注入自己的javascript来攻击IE用户。 BootstrapCDN也使用MaxCDN(Stackpath)作为大型提供商。