Google Cloud Endpoints不尊重etag缓存标头

iTw*_*nty 5 etag google-app-engine caching google-cloud-endpoints

当我发出GET请求时,我得到200 OK和etag标题:

etag ? "tZIZl_M15FKLVh9sN6Nj0iz1dQE/fA5Fya8Zz6DLGJwPNnIWbruyt30"
Run Code Online (Sandbox Code Playgroud)

在我随后的请求中,我发送了

If-Not-Modified ? "tZIZl_M15FKLVh9sN6Nj0iz1dQE/fA5Fya8Zz6DLGJwPNnIWbruyt30"
Run Code Online (Sandbox Code Playgroud)

标头,但端点仍然发回200 OK而不是304.

如何让我的端点遵守If-Not-Modified标头?使用云端点进行缓存的文档不存在:/

Mar*_*rio 2

Google Cloud Endpoints 是一种直接调用后端方法的机制。

因此,它们不遵循其他请求的正常规则,例如您提到的缓存请求。

将它们视为 App Engine 的 AJAX 代码,可以从 Android/iOS/Web 代码调用。

如果缓存对您很重要,您有两个选择:

  1. 使用标准 HTTP 请求/响应模型,即不使用 Cloud Endpoints。
  2. 在您自己的方法中自行实现缓存控制。