2010-09-06 28 views
1

Google Page Speed测试告诉我,我需要通过DNS域名来分发我的查询以加速呈现。如何编码我的ASP.NET页面以跨主机名进行并行下载?

因为我离线开发,所以我想找到一个解决方案,将我的静态内容(img,CSS,js)分布到不同的主机名中,并且在我离开飞机时仍然可以工作。

问: 我如何代码我的页面使用相对路径(或本地主机)下线时,和5个主机之间始终如一地发送静态内容的请求?阅读this后,我想将网址与此类似:

当在线:动态内容
www.TLSAdmin.com

当在线:静态内容
static1.TLSAdmin- Static.com
static2.TLSAdmin-Static.com
static3.TLSAdmin-Static.com
static4.TLSAdmin-Static.com

脱机时:所有内容
本地主机

我宁愿让这个在被称为主机将是一致后刷新页面来利用浏览器缓存。所以随机guid.TLSAdmin.com不会是一个好主意。

+0

如果您有一个将所有内容重定向到www的通配符记录,那么您究竟想要在这里实现什么功能?我不明白。 – x0n 2010-09-06 18:42:38

+0

我如何编码ASP,以便它有条件地插入相关的主机名? – LamonteCristo 2010-09-06 18:43:51

+1

x0n,http标准的一部分规定客户端不应该打开两个以上同时连接到任何给定主机。将其分发给几个不同的主机名允许客户端一次下载更多的文件。即使所有主机名都指向相同的IP,这也是有效的。 – sisve 2010-09-06 18:59:05

回答

1

如何:

1)的代码,你链接到静态资源,例如,[HOSTNAME] /Images/myimage.jpg
2)创建是HTTP模块或一个基类的实现响应过滤器的页面。
3)该过滤器应使用正则表达式来查找[HOSTNAME]的所有实例并替换为替代。

该过滤器可能包含逻辑来检查当前主机名是否是localhost,然后插入localhost作为主机名。要随机化的其他主机名的分配,同时保持高速缓存能力,你可以做到以下几点:

1)有
2)你需要一个更复杂的正则表达式/语法找到[HOSTNAME],也替代主机名的列表找到文件的名称
3)创建文件的完整路径的散列。这可能非常简单,如计算路径中每个字符的ascii代码并找到主机名模块
4)使用散列值从列表中选择主机名。

有了这个,你应该获得跨每个主机名的请求传播+相同的资源将始终从同一个主机提供,因此可以被缓存。

+0

听起来像一个干净的方法,但我从来没有这样做过HTTP模块或基类。我从哪说起呢? – LamonteCristo 2010-09-06 19:43:09

+0

我以前唯一的经历是在研究将ViewState移动到页面底部的想法。以下是我找到的一些资源:http://goo.gl/8IY0 http://goo.gl/qXrK – 2010-09-06 19:59:13

+0

这是另一个http://goo.gl/Ugv1 – 2010-09-06 20:06:14