2010-09-23 29 views
36

返回圖像資源時是否可以返回301/302/303代碼?我過去做過這件事,而且似乎有效。它是不錯的練習,並且與大多數瀏覽器兼容?HTTP重定向圖像可以嗎?

回答

40

是的,你可以重定向圖像和瀏覽器將進行重定向。但出於性能方面的考慮,您通常希望將重定向保持爲最低限度,因爲每次重定向都需要單獨的HTTP請求,這會增加服務器開銷並增加終端用戶頁面加載時間。

你應該避免的一件事是重定向頁面上的許多圖像。這將嚴重減慢頁面加載時間,特別是在每個新的HTTP請求花費很長時間的高延遲網絡(例如電話,中國,衛星互聯網)上。而且,HTTP客戶端僅限於每個服務器主機名的少量同時HTTP連接,因此即使在快速網絡中,您也會遇到瓶頸。

但是,重定向1或2張圖片並不是什麼大不了的事。

如果你重定向圖像並且它們是可緩存的,你最好在遙遠的將來爲一個日期設置一個HTTP Expires頭(和適當的Cache-Control頭),所以至少在後續訪問頁面用戶時將不必再次通過重定向。

如果您重定向的原因是爲了符合新的URL方案,大多數Web服務器都可以輕鬆地重寫服務器上的URL,而無需將實際重定向發送回客戶端。換言之,客戶端可以請求/static/bar.jpg,但服務器可以配置爲將其翻譯爲/media/images/bar.jpg。這種URL重寫方法在大多數情況下比重定向更可取,因爲您可以重構內容在服務器上的位置,而不會導致客戶端或服務器端的重定向開銷。

+0

我不是主張301或重寫,因爲它取決於可取的項目,但我想提及一個額外的重寫考慮因素。重寫不是免費的,他們需要一定程度的額外處理資源。在許多情況下,這不是一個問題,因爲總資源消耗對應於重寫複雜性和執行次數。我只是想確保每個人都瞭解這兩種方法都有其成本,每種潛在的解決方案都是如此。 – TechZilla 2013-04-30 18:05:03

6

是的,它的工作原理。

關於做好做法,有哪些選擇?返回錯誤響應(404)?不是很有幫助。返回重定向資源將返回的圖像?可能不可能,否則你不會重定向。用新的URL修復img標籤?當然,如果可能的話,但也許你想瀏覽器徹底重新定向(可能是一個計數器)。

6

這是確定的,如果代碼實際上反映了現實 - 例如,如果圖像的確permanenetly感動,你應該使用一個301

相關問題