2011-10-26 50 views
3

在我的網站上,用戶可以上傳公開顯示的圖像。當用戶上傳新圖像時,它將覆蓋其舊圖像之一。在asp.net中生成圖片的etags?

因爲圖像可能很大,我希望它們被緩存。但是,當用戶上傳新圖像時,不應使用舊的緩存圖像。

動態圖像的源看起來是這樣的:

userImage.ashx?id=f488b864-0a0b-46d9-af4a-a43cd0dcf751&type=micrositePhoto 

所以我可以注入標題變爲在ashx的文件的響應,如果我需要。

I've been told使用etags來達到這個目的,但我不知道如何在asp.net中做到這一點。我網站上的.js.css文件已經有etags,但我不知道是什麼產生它們。另外,任何生成etags的內置系統都可能不會理解我的.ashx文件的工作方式。

我如何爲我的網站生成etags,並使它們能夠按照它們應有的工作?

回答

1

看來,我認爲你應該能夠做到,例如:

Response.AddHeader("ETag","\"" + Guid.NewGuid().ToString() + "\""); 

的ETag必須內"

注意顯然是封閉的,一旦一個ETag與圖像返回它需要在隨後的請求中保持一致。我上面的代碼只是一個概念證明。 :)

編輯:是的,只是測試和確認使用Firebug的響應標題包含我創建的Guid。

+1

這看起來像它在每次請求,這是不是真的,你想要的東西創建一個新的GUID - 的eTag應連接以某種方式,如採取的文件的內容的散列的內容。 –

+0

@馬修威爾遜當然會創造一個新的Guid; *這是一個例子*;顯然每個請求的GUID必須是相同的,如果該東西要被緩存。我會澄清它。 – Icarus

+0

非常感謝,我可以添加像這樣的標題。有時候asp.net基礎設施會阻礙你。我真的需要一些保持etags一致的方法 - 我想也許有一些與CRC相關的東西?我還需要知道我應該用etags做些什麼,以使它們像應該那樣工作 - 覆蓋緩存等等。 – Oliver