Browser 使用来自不同静态服务器的相同缓存

Browser 使用来自不同静态服务器的相同缓存,browser,caching,header,Browser,Caching,Header,我正在考虑向web应用程序添加另一个静态服务器,因此我将使用static1.domain.tld和static2.domain.tld 要点是使用不同的域,以便更快地加载静态内容,同时使用更多的并行连接,但“麻烦”在于如何让用户的浏览器将static1.domain.tld/images/whater.jpg和static2.domain.tld/images/whater.jpg作为同一个文件来查看 有没有一个技巧可以通过标题实现这一点,或者我必须定义哪个文件在哪个服务器上?没有,没有办法告诉

我正在考虑向web应用程序添加另一个静态服务器,因此我将使用static1.domain.tld和static2.domain.tld

要点是使用不同的域,以便更快地加载静态内容,同时使用更多的并行连接,但“麻烦”在于如何让用户的浏览器将static1.domain.tld/images/whater.jpg和static2.domain.tld/images/whater.jpg作为同一个文件来查看


有没有一个技巧可以通过标题实现这一点,或者我必须定义哪个文件在哪个服务器上?

没有,没有办法告诉浏览器两个URL是相同的-浏览器按完整URL进行缓存


你能做的就是确保你总是对同一张图片使用相同的url。即,所有以A-M开头的图像都将进入服务器1,N-Z将进入服务器2。对于真正的实现,我会使用基于名称或类似内容的哈希,但可能有一些库会为您执行此类操作。

不,没有办法告诉浏览器两个URL是相同的-浏览器按完整URL进行缓存

你能做的就是确保你总是对同一张图片使用相同的url。即,所有以A-M开头的图像都将进入服务器1,N-Z将进入服务器2。对于真正的实现,我会使用基于名称或类似名称的哈希,但可能有一些库可以为您执行此类操作。

您需要两台服务器都能够响应发送到static.domain.tld的请求。我已经看到了很多实现这一点的方法,但它们都是相当低的水平。我所知道的两件事:

使用DNS循环,以便主机名到IP地址的映射随时间而变化;非常大的网站通常会在这一点上使用变体,因此内容实际上是从离客户端更近的CDN提供的。 使用黑客路由器配置,使IP地址由具有不同MAC地址的多台机器应答;这在实践中非常有效,但要求机器在物理上接近。 您还可以通过基于可能是随机的东西(例如,路径的MD5散列中的特定位)定向到不同的服务器,在可见级别进行扩展。最重要的是,所有这些技术都使用软件堆栈的独立部分来工作;您可以任意组合使用它们。

您需要两台服务器都能够响应发送到static.domain.tld的请求。我已经看到了很多实现这一点的方法,但它们都是相当低的水平。我所知道的两件事:

使用DNS循环,以便主机名到IP地址的映射随时间而变化;非常大的网站通常会在这一点上使用变体,因此内容实际上是从离客户端更近的CDN提供的。 使用黑客路由器配置,使IP地址由具有不同MAC地址的多台机器应答;这在实践中非常有效,但要求机器在物理上接近。
您还可以通过基于可能是随机的东西(例如,路径的MD5散列中的特定位)定向到不同的服务器,在可见级别进行扩展。最重要的是,所有这些技术都使用软件堆栈的独立部分来工作;您可以任意组合使用它们。

此服务器故障问题将为您提供大量信息:

此服务器故障问题将为您提供大量信息: