2010-09-06 79 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