2011-05-05 119 views
2

我們公司內有近13個域名,我們希望爲一個應用提供圖像以利用緩存。爲多個網站提供來自一個域名的圖像

例如,我們將有c1.example.com,我們將把我們所有的產品圖片放在這個應用程序下。但在這裏我有一些疑慮;

1-我該如何強制客戶端瀏覽器緩存圖像並且不再請求它?

2-當我在應用程序中引用這些圖像時,我將使用以下html標記;

<img scr="http://c1.example.com/core/img1.png" /> 

但是,當我在https下運行網站時,這會導致問題。它給出關於頁面的警告。當我在https下運行我的應用程序時,應該使用https // c1.example.com/core/img1.png。我應該在這裏做什麼?我應該總是使用https嗎?或者有沒有辦法在自動切換?

我將運行IIS 7

+0

你需要編輯你的文章,使HTML代碼可見。在HTML之前添加4個空格。 – Fishcake 2011-05-05 12:00:04

+0

我修復了你的格式。 – Chuck 2011-05-05 12:01:58

+0

我也這樣做了,謝謝:)順便說一句,看起來像併發是一個問題在這裏:) – tugberk 2011-05-05 12:03:14

回答

1

是的,當通過https提供html頁面時,您需要通過https提供所有資源。這就是使用https的全部意義。

如果hrefs在html中被硬編碼,那麼解決方案可能是使用響應過濾器來解析發送到客戶端的所有內容,並在必要時用https替換http。一個簡單的正則表達式應該可以做到。有plentyarticles在那裏關於這些過濾器如何工作。

關於緩存,您需要發送正確的緩存標頭和etag。有幾個這樣的問題和答案就像這樣IIS7 Cache-Control

+0

*「是的,當通過https提供html頁面時,您需要通過https提供所有資源。這就是使用https的全部要點」*我同意這一點,但是我應該採取什麼樣的解決方案來實現這一點?我會將圖片網址設爲http,如果網頁在https下運行,我希望它們轉換爲https。 – tugberk 2011-05-05 13:02:44

+0

使用響應過濾器在您的html中用https替換所有http-hrefs。用鏈接更新了我的答案。 – 2011-05-05 13:22:51

+0

不是一個好主意。如果我有一些不支持https的鏈接?如果我有一些圖像鏈接不在https下提供?我需要爲此編寫一個正則表達式。我需要使用https將http更改爲其標籤src指向c1.example.com的img標籤。我在這裏正確的方式嗎? – tugberk 2011-05-05 13:26:39

1
  1. 您需要使用HTTP頭告訴瀏覽器如何緩存我的應用程序。它應該是默認的工作(假設你有你的網址沒有查詢字符串),但如果沒有,這裏是關於Cache-Control頭的知識庫文章:

    http://support.microsoft.com/kb/247404

    我真的不知道很多有關IIS ,所以我不確定是否還有其他潛在的缺陷。請注意,瀏覽器有時可能仍會發送HEAD請求。

  2. 我建議您設置圖像服務器,以便HTTP/S可以互換,然後僅從HTTPS請求提供HTTPS Url。

+0

原諒我在這裏的信息不足,但不知道你的意思是這句話:*「我建議你設置圖像服務器如此該HTTP/S是可以互換的,然後只是從HTTPS請求服務HTTPS的URL「* – tugberk 2011-05-05 12:53:22

+0

我基本上說,設置它,以便如果您請求與HTTP或HTTPS的圖像,你會得到相同的文件。所以,如果我訪問http://c1.example.com/core/img1.png和https://c1.example.com/core/img1.png,我會得到同樣的結果。然後進行設置,以便在圖像的任何鏈接都會自動在http/https之間進行更改,具體取決於頁面是否爲https。 – 2011-05-05 13:11:21

+0

我不認爲他的問題是他無法通過https請求圖片。但是如果他的html中的所有圖像hrefs都被硬編碼爲使用http,他需要某種響應過濾器來在頁面通過https提供服務時更改這些信息。 – 2011-05-05 13:21:34

相關問題