动态PHP电商网站伪静态的Nginx反向代理Cache缓存终极设置
Posted 深港科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态PHP电商网站伪静态的Nginx反向代理Cache缓存终极设置相关的知识,希望对你有一定的参考价值。
背景介绍:
最近为电子商务网站 设置伪静态和nginx反向代理cache缓存,进过长时间的调试,终于达到比较满意的效果,这里把实战经验分享给大家,希望对新人有所帮助,能节约大家的一些时间。文章中有连接到真实配置的网站 转载请保留此连接,本文章中所有达到的效果,都可以到 去真实的查看和测试。欢迎大家批评指导和交流心得!
服务器配置:
数据服务器X + 前端缓存服务器Y。 网站数据都放在数据服务器X上,数据服务器上设置好伪静态,将需要缓存的页面,都伪静态成以.html结尾的URL。前端服务器Y只做Nginx缓存proxy_cache,缓存所有.html结尾的URL。 从安全性设计,数据服务器X 只接受前端服务器Y的请求,拒绝对其他IP进行响应。
最终效果:
不同IP的都读取缓存:所有.html结尾的伪静态页面,都能缓存起来。默认缓存3小时。这类页面属于不需要实时更新数据的,实际上都是php动态程序。只要有一次访问,页面就缓存在前端服务器Y里面,3小时内,其余所有不同IP访问都不再访问数据服务器X,而全部只在前端服务器Y里 进行响应。
访问过的连接,从客户电脑读取文件:直接输入网址,或者网站各个后缀是.html的连接,点击过一次之后,再次点击,实现http状态200 cache缓存效果。就是说,某个连接点击过一次之后,再次点击,将不再对前端服务器Y发出任何请求,而是直接读取终端客户电脑的缓存数据。直接输入网址,然后回车,也是一样的效果。极大的提高前端服务器Y的效率。
浏览器刷新按钮,服务器不传输数据:对实际上是动态php程序但已经伪静态的.html的页面,点击鼠标右键的刷新按钮,或点击浏览器上面的刷新按钮,只是对前端服务器Y发出header头检查,返回304状态,然后读取终端客户电脑的缓存数据。极大的节约前端服务器Y的带宽。
强制Ctrl+F5刷新,才读取数据:这实际上就是模拟第一次访问,在默认的3小时缓存期间,http返回200状态,从前端服务器Y读取数据。数据服务器X 仍然不需要做出任何响应。
实际应用举例:懂得按Ctrl+F5强行刷新的人,基本上都是技术员或程序员。而且基本上都是在模拟测试第一次访问的效果。真实的客户,没有人懂得这样做的。既然你懂这样做,那么就打开firefox的debug软件来看看效果吧!详情请看下面的图片。
期望达到的目的和实现方法详细介绍:
1.不同IP的访问全部命中缓存,百万访问量只查询8次数据服务器:所有.html结尾的伪静态页面,都能缓存起来。默认缓存3小时。首页被1个人访问过之后,不论这个人在哪里,上海,北京,深圳,美国都无所谓。3小时内的缓存期,全球所有国家的人再次访问网站的首页,都只是访问的前端Y服务器,而数据服务器X没有任何负担,数据库0压力。
实际应用举例: 的首页被1个人访问过之后,不论这个人在哪里,上海,北京,深圳,美国都无所谓。3小时内的缓存期,全球所有国家的人再次访问网站的首页,都只是访问的前端Y服务器,而数据服务器X没有任何负担,数据库0压力。3小时后,第一个访问首页的人,将会去数据服务器X读取一次实时的数据,查询一次数据库,然后3小时内,其他所有人的访问,又全部是从前端服务器Y中读取了。也就是说,一天24小时内, 的首页在数据服务器X中,理论上应该只有8次访问记录(24除以3等于8),其他所有的访问,无论是几千还是几万,还是几百万次首页的访问,都是前端服务器Y的事情了。
Firefox的debug效果截图:
实现方法:这个是nginx最基本的proxy_cache的设置,网络上搜索大量的教材,这里就不累赘。节选部分吧。
默认全局缓存的代码如下,包括所有的后缀,只要是/目录下的都缓存。后面在把.php结尾的设置为不需要缓存即可。
1
以上是关于动态PHP电商网站伪静态的Nginx反向代理Cache缓存终极设置的主要内容,如果未能解决你的问题,请参考以下文章 |