Google App Engine - 用于缓存控制的headers []和headers.add_header()

use*_*918 9 python google-app-engine header no-cache

设置缓存控制的正确方法是什么?

有时我看到使用header []

self.response.headers["Pragma"]="no-cache"
self.response.headers["Cache-Control"]="no-cache, no-store, must-revalidate, pre-check=0, post-check=0"
self.response.headers["Expires"]="Thu, 01 Dec 1994 16:00:00"
Run Code Online (Sandbox Code Playgroud)

其他时候,我看到headers.add_header()

self.response.headers.add_header("Pragma","no-cache")
self.response.headers.add_header("Cache-Control","no-cache, no-store, must-revalidate, pre-check=0, post-check=0")
self.response.headers.add_header("Expires","Thu, 01 Dec 1994 16:00:00")
Run Code Online (Sandbox Code Playgroud)

甚至是header []和headers.add_header()的混合

self.response.headers["Pragma"]="no-cache"
self.response.headers.add_header("Cache-Control","no-cache, no-store, must-revalidate, pre-check=0, post-check=0")
self.response.headers.add_header("Expires","Thu, 01 Dec 1994 16:00:00")
Run Code Online (Sandbox Code Playgroud)

Mat*_*hen 10

不同之处在于,使用headers[]将覆盖以前的值,而add_header不会.

从wsgiref.headers 文档(由GAE文档引用),"设置标题删除该标题的任何现有值,然后在包装标题列表的末尾添加新值."

  • 因此,要设置缓存控制,只需使用`headers []`,因为这些标头是单值的(例如,您不希望出现多个`Pragma`标头). (2认同)