在浏览器中实现并行静态内容下载?

时间:2010-02-21 17:19:04

标签: http browser caching performance

我们正在考虑调整网页,以便我们split调用跨域的静态数据。为此,我们必须:

  • 始终提供来自同一子域的相同内容,以便保持缓存
  • 尝试并提供来自每个子域的大致相同数量的内容
  • 尝试以每页为基础自动执行此操作,即避免手动编码每个图像并且必须保持该
  • 提出可在我们的开发/测试/生产环境中使用的解决方案
  • 不影响服务器上的页面处理时间

我们正在使用J2EE应用程序服务器创建HTML页面,我正在尝试找到最佳方法,以便为我们的所有网页实现这一点。

据我所知,如果我们在渲染HTML页面时这样做,我们需要在构建页面时有一个大小存储在我们可以参考的地方的图像列表。如果要在HTML页面上写出图像,我们将需要确定在该页面处理中该用户从该子域提供的其他图像的数量。然后我们将此图像分配给子域,并以某种方式记住用户会话(或更长时间)。

或者我过于复杂了吗?维护网站上每个页面上的图像列表是否更容易,并且(离线)确定每个图像所在的子域,并且只对所有用户一致地使用它?

我当时认为可能有一种方法可以在浏览器中使用JavaScript,但我认为每个页面渲染的开销可能有点高。

我知道这个话题有点模糊,但如果有人实施了这个话题,我很想听听你的经历。

谢谢!

1 个答案:

答案 0 :(得分:1)

除非你的情况非常不寻常,否则我认为你很可能过于复杂。

首先,这里使用并行下载的方法忽略了客户端性能的其他关键元素之一,即最小化您使用的不同域的数量。你必须在两者之间取得平衡。 From the same guidelines you linked to

  

至少两个但不超过四个主机名(已添加其中)

之间拆分[图片,脚本,CSS,Flash等]

因此,对于大多数情况,最简单的解决方案也可能是最优的:

  • 图片域名;
    • 在大量设计元素图像(例如圆角,项目符号等)和单独数量的内容图像的情况下,请考虑从两个图像中提供它们 - 例如static-images.mydomain.comcontent-images.mydomain.com
  • 一个用于脚本,CSS和Flash;
    • 如果特别是其中一个比其他人占用更多,请考虑将其拆分为与其他域不同的域。