如何缓存脚本和模块



我知道,对于像图像这样的资产,有一个src与它们相关,这意味着浏览器将在src上对该资产发出新请求之前检查该资产的到期日期,以再次下载该资产,然后将其呈现到页面上。这是如何与React这样的脚本或模块一起工作的?如果是CDN,浏览器是否首先下载脚本,然后在第一次遇到脚本时运行它?然后,每当它再次需要这个脚本时,它是否只是从缓存中加载它(而不是从源代码中再次下载)并运行它?如果您将React作为一个节点模块,会发生同样的事情吗?

这是一个非常大的主题,基本答案是浏览器也会按照您告诉它们的方式缓存资产。您提到图像有过期日期,这些日期是在服务器发送的HTTP标头中设置的。您可以为javascript和从服务器请求的任何其他文件设置相同的头,浏览器将以相同的方式缓存它们。

获取javascript资产(从服务器或缓存)后,浏览器将解析并运行您的javascript。

节点模块生活在节点土地上。通常,在浏览器中使用node_modules中的代码之前,您可以通过webpack或browersify等工具运行它。这些工具将所有代码(您的应用程序+反应+其他任何东西)捆绑到一个文件中(通常),然后提供给浏览器。浏览器对node_modules一无所知。它只是解析并运行您提供的javascript。

一个绑定文件是根据发送时使用的头文件进行缓存的。CDN(基本上)只是一个在快速服务资产方面进行了优化的特殊服务器。

最新更新