在询问发送存储在Google App Engine数据存储中的图像时发送“304未修改”的问题后,现在我有一个关于
Cache-Control 的问题。 我的应用程序现在发送 Last-Modified 和 Etag ,但默认情况下GAE也会发送 Cache-Control:no-cache 。 根据this page:
根据RFC, “无缓存”指令告诉浏览器它应该在从缓存中提供页面之前重新验证服务器。[...]实际上,IE和Firefox已经开始将no-cache指令视为指示浏览器甚至不缓存页面。
因为我确实想要浏览器缓存图像,所以我已将以下行添加到我的代码中:
self.response.headers['Cache-Control'] = "public"
根据之前的同一页面:
“cache-control:public”指示告诉浏览器和代理可以缓存该页面。对于非敏感页面,这有利于提高性能。
问题是这样做是否会对应用程序造成伤害?最好发送“Cache-Control:must-revalidate”以"强制"浏览器重新验证(我想这就是最初发送“Cache-Control:no-cache”的原因所在)。
此指令要求浏览器在从缓存中提供页面之前必须针对服务器重新验证页面。请注意,它隐含地允许浏览器缓存页面。