观察到通过 ngx.say 提供的资源每次都会被重新请求。当请求头还没发送时,ngx.say 是否会修改请求头影响缓存?还是说通过 content_by_lua 产生响应的情况自然会导致浏览器不缓存?
content_by_lua
ngx.say 是会将响应头发送出去吧?
ngx.say
你没有主动 ngx.send_headers(), 那么第一次使用ngx.say时,会自动发送一个headers到客户端。如果你想调整请求的缓存时间,试试location里面加expires,或者第一次调用ngx.say前,通过ngx.header写入。
kurapica 我的疑问在于我没有刻意去操作的情况下,在 say 前头没有发送的话,头部的内容会受到 say 影响吗? 通过 content_by_lua 产生响应的时候,默认的头部是什么样的?
ngx.say只是会发送header,并不会影响它,通常,header的默认内容是nginx.conf里面定义。
kurapica 我猜想和缓存有关的头部大概是产生内容的模块(比如 php 模块、流媒体之类)自己加的,content_by_lua 没有主动加于是就没有这些头。