我最近遇到了ETagHTTP标头的概念。(this)但是我仍然有一个问题,对于负责生成ETag的特定HTTP资源?
ETag
换句话说,它是实际的应用程序,容器(例如:Tomcat),Web服务器/负载平衡器(例如:Apache / Nginx)吗?
谁能帮忙吗?
与HTTP规范的大多数方面一样,最终的责任在于提供资源的人。
当然,通常使用我们的工具(服务器,负载平衡器,应用程序框架等)来帮助我们履行这些职责。但是,没有任何规范定义期望与应用程序相对应的“ Web服务器”提供的内容,这只是您所使用的工具中可用功能的实际问题。
现在,ETags特别看一下,一种常见情况是可以将框架或Web服务器配置为自动对响应(主体或其他内容)进行哈希处理并将结果放入中ETag。然后,根据条件请求,它将生成响应并将其哈希以查看其是否已更改,如果没有,则自动发送条件响应。
ETags
举两个我熟悉的例子,nginx可以在Web服务器级别使用静态文件来执行此操作,而Django可以在应用程序级别通过动态响应来执行此操作。
这种方法很常见,易于配置,并且效果很好。但是,在某些情况下,它可能不是最适合您的用例的。例如:
因此,在某些情况下,您可能想ETags在应用程序级别创建您的应用程序。再次以Django为例,它提供了一种简单的方法来提供自己的计算功能ETags。
总之,提供ETags您所控制的资源最终是您的责任,但是您很可能能够利用软件堆栈中的工具为您完成这些工作。