【问题标题】:Website page load time and keep-alive http connections网站页面加载时间和保持活动的 http 连接
【发布时间】:2010-11-27 00:52:19
【问题描述】:

背景:我更喜欢将所有 CSS 和 Javascript 保存在单独的 .css/.js 文件中。 (原因是它们被许多页面共享,因此以这种方式,这些文件中的静态数据不会随着每个页面视图传输)。这导致某些页面有 5-6 个“链接 rel”或“脚本类型”语句。

现在,通常情况下,这意味着浏览器将对这些 css/js 文件中的每一个发出单独的请求,并且有效页面加载时间可能会增加 - 比如说 5 次往返请求变为 5 倍(如果我在这里错了,请纠正我)。

我的问题是:

1) 现代浏览器是否默认请求保持连接?

2)如果他们这样做了,那么是否意味着额外的文件来源(css/js)不会增加有效加载时间?例如 - 服务器是否会假设浏览器将请求 css/js 文件,并因此继续发送它(从而避免额外的请求)?

简而言之 - 任何人都可以解释加载时间何时不会通过单独的 css/js 文件增加,如果它总是增加,那么加载时间增加与包含的文件数量成正比吗?

问候,

日本

【问题讨论】:

    标签: apache http browser httpwebrequest keep-alive


    【解决方案1】:
    1. 是的,使用 HTTP/1.1 的浏览器通常应该使用保持活动连接。

    2. 服务器不一定会假设它; keep-alive 应该意味着没有单独的 DNS 查找 - 该文件仍然被请求。

    如果配置正确,您应该会发现(例如,可以使用 Firefox+Firebug 验证)第一个请求会生成这些文件的正常下载,但后续请求会生成 HTTP 304(文件未修改)请求,其中内容有自上次加载以来未更改,因此它应该可以从缓存中获得。

    如果这是一个真正的问题,您可能需要考虑使用 Expires 标头来指定文件的长寿命,因此甚至永远不会发出请求(甚至不会请求查看文件是否已更改)

    【讨论】:

    • 无论是否保持连接,DNS 查找仍然被缓存。 keep-alive 确实避免了额外的 TCP 连接创建开销。 Keep-alive 对浏览器页面缓存(“文件未修改”)也没有影响,我不知道你为什么会这么认为。
    • 第 1 点。很高兴知道。我也不知道“过期”(但正在寻找类似的东西)。另外,你能告诉我 - 如果我从我的主页(全部在我的服务器上)获取 5 个 css/js 文件,这 5 个请求是串行还是并行发出的?
    • 我相信当前浏览器的默认配置是一次并行运行 2 个请求。
    • 好的...所有这些信息将帮助我为我的网站选择正确的结构。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2020-01-19
    相关资源
    最近更新 更多