2009-09-26 86 views
3

我們正在考慮在CDN上承載我們網站的核心內容(不需要動態生成的所有內容),以便我們的根域(例如「http://example.com/」)指向CDN,那麼一切動態要麼點到備用二級域名(如「http://search.example.com/用於搜索)或者通過AJAX的靜態內容的上面一層調用備用域(例如http://ajax.example.com/)。CDN上的全站點緩存問題? (例如移動瀏覽器的備用內容)

這似乎是這對很多網站來說都是非常理想的,但是即使在CDN主頁上,我也沒有看到關於全站點緩存的很多信息。至少有一個明顯的問題出現在我身上,那就是我們目前檢測是否用戶來自移動瀏覽器或不在服務中移動內容如果他們來自移動瀏覽器。問題是,據我所知,大多數CDN只能存儲在頁面版本上,所以如果你緩存常規頁面,移動瀏覽器將會看到,而不是移動版本(反之亦然)。

我們可以通過將移動設備移動到一個單獨的域名(如m.example.com)來解決此問題,但我們需要CDN檢測移動瀏覽器並將其重定向到該域(我們還希望已經在CDN上託管,但顯然是指向移動內容而不是常規內容)。

看來這應該被廣泛支持,但我無法找到關於它的很多信息。有沒有人做過類似的事情?如果是這樣,你使用了什麼CDN,你是如何解決這個問題的?還有其他重大障礙需要克服嗎?

編輯補充幾件事情我忘了:

我們也考慮過使用JavaScript,但隨後明顯較老的手機沒有的JavaScript會在被冷落了重定向到移動網站,他們是可能需要的那些手機版本最多。可能因素到任何回答這個問題

一個限制是我們需要我們的主站點的網址是SEO的目的非常明確,但我們完全不關心的搜索引擎優化的移動版本。

回答

0

如果各種設備(例如手機)的頁面渲染不同,它不是靜態內容,也不應該放在CDN上。

僅在您的CDN上放置真實的靜態文件,併爲您的頁面考慮不同的緩存策略。

總之,而不是通過JavaScript檢測客戶端的瀏覽器,你也可以做到這一點的服務器端,實際上我會建議你,而不是JavaScript的。然後你可以實現重定向的方法。

希望有所幫助。

1

我們在我們的CDN(EdgeCast)中有相關規則,可緩存同一傳入Url的多個版本(桌面,Iphone,Blackberry等)。 CDN規則將請求字符串附加到請求到源服務器。我們的原始服務器上的自定義代碼根據傳入的查詢字符串呈現正確的版本。例如:

Desktop: CDN requests /?nomobile origin server returns Desktop rendering 
Iphone:  CDN requests /?iphone origin server returns Iphone rendering 
Blackberry: CDN requests /?mobile origin server returns Mobile rendering 

就CDN而言,有3個不同的網址,因此有3個不同的頁面被緩存。查詢字符串對最終用戶完全透明。即使您在媒體查詢中使用響應式設計,這種方法也非常有用,可讓您靈活地在服務器級別更改HTML。