为什么 LinkedIn 在其(更新的)网站中使用隐藏的 <code> 标签?
Why does LindkedIn use hidden <code> tags in their (updated) website?
LinkedIn 的 DOM 充满了隐藏的 <code>
标签,其中填充了序列化的 JSON 数据。
这些元素不会呈现在页面的任何位置,也不会用于表示计算机代码片段。
这样做有什么性能优势吗?用这些数据污染 DOM 的目的是什么?
他们使用此标签存储应用程序数据,然后在 JavaScript 的其他地方使用这些数据。示例:
<code style="display: none" id="datalet-bpr-guid-1440862">
{"request":"/voyager/api/configuration","status":200,"body":"bpr-guid-1440862"}
</code>
本身并没有什么特别之处,他们本可以使用 div 或任何其他标签。我猜他们使用了 <code>
因为它确实是代码,尽管该标签通常用于显示它而不包括应用程序数据。
我的猜测是,这通过删除大量 AJAX 调用来加快渲染速度。无需执行许多 AJAX 调用,这些调用的结果可以在服务器上预先计算、缓存并与初始页面请求一起发送,而无需改变前端站点的体系结构。某些 ajax 调用只需扫描 DOM 以查找 $('code #datalet-something-something')
,如果未找到,则继续使用网络并与服务器通信。
这类似于在首屏硬编码 CSS 样式以提高渲染速度。 Facebook 做了类似 BigPipe 概念的事情
现在,为什么要使用 标签而不是
LinkedIn 的 DOM 充满了隐藏的 <code>
标签,其中填充了序列化的 JSON 数据。
这些元素不会呈现在页面的任何位置,也不会用于表示计算机代码片段。
这样做有什么性能优势吗?用这些数据污染 DOM 的目的是什么?
他们使用此标签存储应用程序数据,然后在 JavaScript 的其他地方使用这些数据。示例:
<code style="display: none" id="datalet-bpr-guid-1440862">
{"request":"/voyager/api/configuration","status":200,"body":"bpr-guid-1440862"}
</code>
本身并没有什么特别之处,他们本可以使用 div 或任何其他标签。我猜他们使用了 <code>
因为它确实是代码,尽管该标签通常用于显示它而不包括应用程序数据。
我的猜测是,这通过删除大量 AJAX 调用来加快渲染速度。无需执行许多 AJAX 调用,这些调用的结果可以在服务器上预先计算、缓存并与初始页面请求一起发送,而无需改变前端站点的体系结构。某些 ajax 调用只需扫描 DOM 以查找 $('code #datalet-something-something')
,如果未找到,则继续使用网络并与服务器通信。
这类似于在首屏硬编码 CSS 样式以提高渲染速度。 Facebook 做了类似 BigPipe 概念的事情
现在,为什么要使用 标签而不是