如题,百度搜索了一些 nginx 缓存相关的知识,其中缓存动态页面的部分没太看明白,写的比较清楚的也不多,来 v2 问一下老哥。
目前需求是,有一接口执行某科学运算操作,需要后端调用数据库进行一个大的连表,调用时间大概在一分钟左右,这里为了简化,代表这个接口是不断变化的,假设该接口地址为 127.0.0.1/api,返回请求时候的 utc 时间。
百度上对于 nginx 静态缓存说的挺明白的,客户浏览器请求资源时候还是会向服务器确认,如果文件修改时间无变化,则不传输新文件。
但动态的部分看了一些文章写的都不是很清楚,nginx 似乎是有缓存动态页面的能力的,但是我没看懂 nginx 如何向后端服务器确认是否需要更新页面。
比如一用户在 2021 年 1 月 1 日上午 9 点访问 127.0.0.1/api,得到结果 2021-1-1 09:00,而后在十分钟后再次访问。此时正确返回结果应为 2021-1-1 09:10,但是如果后端觉得这个结果不刷新也行,如何告知 nginx 不需要发起新的计算请求呢?
=
还有一个疑问是,缓存与 worker 的管理策略是什么,如果假设 10 个 worker 各自管理自己的缓存内容,岂不是效率很低么
目前需求是,有一接口执行某科学运算操作,需要后端调用数据库进行一个大的连表,调用时间大概在一分钟左右,这里为了简化,代表这个接口是不断变化的,假设该接口地址为 127.0.0.1/api,返回请求时候的 utc 时间。
百度上对于 nginx 静态缓存说的挺明白的,客户浏览器请求资源时候还是会向服务器确认,如果文件修改时间无变化,则不传输新文件。
但动态的部分看了一些文章写的都不是很清楚,nginx 似乎是有缓存动态页面的能力的,但是我没看懂 nginx 如何向后端服务器确认是否需要更新页面。
比如一用户在 2021 年 1 月 1 日上午 9 点访问 127.0.0.1/api,得到结果 2021-1-1 09:00,而后在十分钟后再次访问。此时正确返回结果应为 2021-1-1 09:10,但是如果后端觉得这个结果不刷新也行,如何告知 nginx 不需要发起新的计算请求呢?
=
还有一个疑问是,缓存与 worker 的管理策略是什么,如果假设 10 个 worker 各自管理自己的缓存内容,岂不是效率很低么