2012-11-04 58 views
2

我正在嘗試向Azure CDN(生產站點)上的項目發出HEAD請求,但希望避免響應來自無論是本地瀏覽器緩存還是原始服務器(我的網絡角色)。這將是一個流量很大的網站,內容全是靜態的,因此可以從我的web角色的/ cdn文件夾緩存在Azure CDN上。緩存破壞本地瀏覽器緩存但確保Azure CDN響應而不是來自原始服務器(Web角色)

我已經通過調用解決,避免我的本地瀏覽器緩存的問題:

$.ajaxSetup({cache: false}); 

也正在使用我的HEAD請求簡單地檢索響應時間,因爲所有我想要的是在格林尼治標準時間保證當前時間( Azure是所有設置爲格林尼治標準時間):

$.ajax({ 
    type: "HEAD", 
    async: true, 
    url: "small.png", 
    success: function (message, text, response) { 
     doSomething(response.getResponseHeader("Date")); 
    } 
}); 

現在,我保證,我的迴應是絕對不會被我的瀏覽器緩存副本完成,但我不知道如何驗證是否響應從Azure的未來CDN或原始服務器(Web角色)。我想保證,如果「small.png」在Azure CDN上,我的迴應來自那裏。基本上,我需要確認我的原始服務器不會受到請求的轟炸,並且CDN將遏制99.999999%的請求,包括這個請求。但是,由於我在HEAD請求($ .ajaxSetup({cache:false});之前執行了緩存清除操作;它將唯一查詢字符串附加到請求上,所以我不確定Azure CDN是否決定將請求轉發到原始服務器

請注意,通過Azure門戶,我已經在我的CDN上選中了「啓用Querystring」選項,我認爲這足以滿足我,但我希望得到溫暖和模糊的感覺, Azure CDN,而不是起源。在小提琴手中有沒有任何指標可以證明我的回答是來自CDN(代理服務器)而不是原始服務器?

目前我有30分鐘的緩存過期,但我會調整/優化這個當我們上線。

回答

1

保持「啓用查詢字符串」取消選中正是你想要的。

至於確定CDN是否回到給定請求的原始服務器,你擁有原始服務器,對嗎?所以你可以看到那裏,如果你被擊中或不。我不確定有什麼辦法可以從查看CDN的響應來判斷它是緩存命中還是緩存未命中。

+0

感謝您的回覆smarx!實際上,在我的這個項目的工作過程中,我實際上遇到過你的smarxcdn博客文章。我的原始服務器是Azure上的生產Web角色,我會看看是否可以將其設置爲使用RDP來檢查日誌。 – CombYoBeard

+0

我能夠遠程訪問我的Web角色的所有實例,並確認HEAD對small.png的請求在CDN上受到限制,原因是該圖像緩存在Azure CDN上,並且未在我的CDN端點上保留「查詢字符串」在Azure門戶中進行設置。謝謝! – CombYoBeard