在查看etag周围的Flask(werkzeug)源码时,发现它生成一个响应对象,通过sha1从数据中生成etag,与请求的if-none-match etag进行比较,返回304或200。因此,无论是否有 etag,访问数据库和创建响应的过程都是相同的,而 etag 的好处就是不必向客户端发送数据。
当然,如果你有大量的数据,那是有好处的,但是如果数据没有那么大,是不是就认为没什么用呢?
与其从每个请求的响应中重新创建etag,我认为最好将etag存储在redis或服务器内存等中,当作为请求目标的对象发生变化时,并在发出请求时将其与预先存储的 etag 进行比较。
这种缓存方式不经常使用吗?