2010-02-18 15 views
5

當用戶請求相同的頁面時,使用相同的數據...我希望Django返回304,以便瀏覽器不必重新加載頁面。如何在Django中集成304?

我是新來的。如何才能做到這一點?

謝謝。

回答

12

有Django文檔中廣泛描述:Conditional view processing

以下工具尤其有用:

  1. @last_modified@etag視圖裝飾。您提供了一個函數來計算來自請求的值,其他所有操作都是自動完成的。
  2. django.middleware.http.ConditionalGetMiddleware - 它生成所需的ETag並在存在緩存命中時返回304,但這仍然需要服務器時間來生成完整的HTML,並且只保存網絡時間。單線配置更改仍然非常有用。
6

你可以看看Django的caching system,或者如果你可以很容易地檢查用戶請求相同的數據,你可以返回一個HttpResponseNotModified() - 這會返回一個304退房的文檔here

+2

服務器端緩存很有用,但與HTTP 304無關。確實,您可以自己返回HttpResponseNotModified,但Django已經有內置機制來檢查相同的響應併爲您返回304;見Alex Lebedev的回答。 – 2010-02-18 13:15:59

+0

謝謝卡爾,我不知道!我還有很多東西要學習Django。 – hora 2010-02-19 20:32:36