ano*_*ard 7 nginx cache http-headers
我似乎找不到足够的文档。我有一个生成一些动态响应的应用程序,但仍然可以从Last-Modified
标题中受益——所以我发送了它。
但是,打开if_modified_since
(设置为before
,根据http://nginx.org/en/docs/http/ngx_http_core_module.html#if_modified_since)似乎对非静态资源没有任何影响。例如,php、python 应用程序。
这是因为 Nginx 不只是查看我的响应Last-Modified
标头吗?因为我可以看到它们似乎设置正确,如下所示:
> GET /3.0/view.json?id=2 HTTP/1.1
> Host: xxxxxxxxxxxxx
> Accept: */*
> If-Modified-Since: Sat, 02 May 2015 19:43:02 GMT
>
< HTTP/1.1 200 OK
* Server nginx/1.4.7 is not blacklisted
< Server: nginx/1.4.7
< Date: Fri, 01 May 2015 19:56:05 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Encoding
< Last-Modified: Fri, 01 May 2015 19:56:05 GMT
Run Code Online (Sandbox Code Playgroud)
或者我忽略了更大的东西?只是好奇是如何
if_modified_since
实施的,与我设定的期望相比。我认为它只会查看响应标头,并根据需要覆盖状态。我错了吗?
Last-Modified
在您的应用回复中发送标头是一个开始,但您似乎没有If-Modified-Since
正确处理传入的请求,因为您的应用应该回复304 Not Modified
而不是200 OK
. 更改 nginx 上的指令只会影响由 nginx 直接提供的请求,即静态资源,除非您将其配置为反向代理缓存。在这种情况下,您可能会提供有关此标头值的陈旧回复,因为内容将被缓存一段时间而不会影响您的应用。一旦过期,打开<X>_cache_revalidate
将使用If-Modified-Since
标头重新验证 nginx 缓存和您的应用程序之间的缓存内容(其中<X>
= proxy / fastcgi / scgi / uwsgi)
归档时间: |
|
查看次数: |
7976 次 |
最近记录: |