如何在Django中集成304状态码?
当用户请求同一页面,并且数据没有变化时,我希望Django能返回一个304状态码,这样浏览器就不需要重新加载整个页面了。
我对这个还不太了解。怎么才能做到呢?
谢谢。
2 个回答
13
Django的文档里有详细的说明:条件视图处理
以下工具特别好用:
@last_modified
和@etag
这两个视图装饰器。你只需要给它们提供一个函数来计算请求的值,其他的事情它们会自动处理。django.middleware.http.ConditionalGetMiddleware
-- 这个工具会生成需要的ETag,如果缓存命中,它会返回304状态码,但这仍然需要服务器时间来生成完整的HTML,只是节省了网络传输时间。不过,这个配置只需要一行代码,非常方便。