2008-09-24 26 views
8

我有形式爲http://domain/image/⟨uuid⟩/42x42/some_name.png的網址。 Web服務器(nginx)配置爲查找文件/some/path/image/⟨uuid⟩/thumbnail_42x42.png,如果它不存在,它會將該URL發送到後端(通過mod_wsgi的Django),然後生成縮略圖。然後,後端發出一個302重定向到完全相同的客戶端請求的URL,想到在這第二次請求時服務器會注意到縮略圖文件並直接發送。重定向到相同的URL是否安全?

問題是,這是否適用於所有瀏覽器?到目前爲止,測試沒有顯示出任何問題,但是我能確定所有的用戶代理都會將其解釋爲預期的嗎?

更新:讓我澄清一下意圖。目前這個工作如下:

  1. 客戶端請求圖像的縮略圖。
  2. 服務器發現文件不存在,所以它將請求轉發到後端。
  3. 後端創建縮略圖,並返回302
  4. 後端釋放所有的資源,新生成的文件,讓服務器份額的當前和後續的客戶。

具有後端服務新創建的圖像是有兩個原因更糟:

  1. 兩個服務必須創建相同的數據的方法;
  2. 服務器在提供靜態內容方面要好得多。如果客戶的鏈接非常慢,該怎麼辦?後端並不是特別快,也不是記憶效率高,並且將內存留在記憶中,同時用勺子喂客戶端可能會造成浪費。

因此,我保持後端工作的最短時間。

更新²:我真的很感謝某些有許多瀏覽器經驗的人的RFC參考或意見。所有肯定的答案都是令人愉快的,但它們看起來有些毫無根據。

回答

1

如果沒有,客戶端壞了。大多數客戶端將遵循重定向循環,直到達到最大值。所以是的,它應該沒問題,直到你的後端出於任何原因不生成縮略圖。

您可以改爲更改網址爲http://domain/djangoapp/generate_thumbnail,並且將返回縮略圖和適當的內容類型等

0

是的,這是罰款,你在以前重新定向到同一個URI。