gpt4 book ai didi

ruby-on-rails - 如果 Rails Assets 管道将所有 JS 文件合二为一来加快下载速度,那不影响缓存吗?

转载 作者:行者123 更新时间:2023-12-04 18:17:02 25 4
gpt4 key购买 nike

连接的目的是通过只下载一个文件来提高性能,但这意味着每次您更改一些自己的 javascript 时,都会重新编译整个包并进行指纹识别 - 包括像 jQuery 这样的大型库没有改变,如果它们可以单独下载,它们会被缓存,但现在每次都将重新下载 jQuery,作为统一 application.js 的一部分。

我在这里想念什么?最好的方法不是创建两个 list 吗 - 一个用于您自己的文件(很小且经常更改),另一个用于库(很大且不经常更改)?

最佳答案

我会试一试,里面有一些猜测......

首先,JQuery 由 Rails 本身提供,根据您的布局,它将来自 CDN。因此,让我们看看可能随时间变化的库。这里有哪些场景?

  • 用户第一次访问该网站。他的浏览器(取决于类型)必须加载所有 Javascript 文件,然后才能显示低于该文件的内容(因此,将其移至末尾)。根据浏览器的不同,它可能一次加载 2、4、6 或 8 个资源,如果您的站点由数十个甚至数百个资源组成,那么这将减慢演示速度。
  • 用户第二次访问该网站(此页面)。通常在同一天、一小时甚至一分钟。整个东西都会被缓存,只有一个请求,可以使用缓存的东西,然后很快。如果所有资源(数百个)一个接一个被加载,如果缓存有效,将有数百个请求。
  • 用户第二次访问该网站,中间有一段时间(比如说 15 天)。仅更改了 1 个资源,所有其他资源都可以缓存和重用。这概率有多大?
  • 用户(开发人员)在开发期间访问他的工作。不使用 Assets 管道,不使用缓存,因为每个更改都应该立即注意到。

  • 所以我认为,从网站的角度来看,只有场景 3 可能(有点)慢,这是最不可能的。通常,许多请求的开销比请求的大小更相关。

    如果您有时间,只需尝试使用显示所有资源加载时间的工具即可。可能存在一种资源会经常更改的极端情况,因此不应包含在 Assets 管道中,但通常,每次更改都包含大量资源,将它们缓存为一位 blob 有助于避免大量请求。

    以下是讨论此问题的一些引用文献:
  • 史蒂夫苏德斯:High performance web sites ,简短而好的总结
  • 史蒂夫苏德斯:High performance web sites书中相同
  • 史蒂夫苏德斯:Even faster web sites更高级,相同主题
  • 加里米尔萨普:Thinking clearly about performance (first part)更多在服务器端,但非常好,尤其是开头非常清晰。
  • 关于ruby-on-rails - 如果 Rails Assets 管道将所有 JS 文件合二为一来加快下载速度,那不影响缓存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11485426/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com