如何在Django中集成304?

TIM*_*MEX 6 python django header http-status-code-304

当用户请求相同的页面时,使用相同的数据......我希望Django返回304,这样浏览器就不必重新加载页面了.

我是新手.如何才能做到这一点?

谢谢.

Ale*_*dev 13

Django文档中有大量描述:条件视图处理

以下工具特别有用:

  1. @last_modified@etag查看装饰器.您为它们提供了一个函数来计算请求中的值,其他所有内容都是自动完成的.
  2. django.middleware.http.ConditionalGetMiddleware - 如果有缓存命中,它会生成所需的ETag并返回304,但这仍需要服务器时间来生成完整的HTML并且只保存网络时间.对于单线配置更改仍然非常有用.


hor*_*ora 6

您可以查看Django的缓存系统,或者如果您可以轻松检查用户是否请求相同的数据,您可以返回HttpResponseNotModified()- 这将返回304.请查看此处的文档.

  • 服务器端缓存很有用,但与HTTP 304无关.而且您可以自己返回HttpResponseNotModified,但Django已经有内置机制来检查相同的响应并为您返回304; 见Alex Lebedev的回答. (2认同)