Php 高使用率网站的缓存策略
我们正在为一个频繁使用的网站设计缓存策略。 该网站由动态和静态内容组成。前端是PHP,中间层是Tomcat,后端是mysql 只有用户登录屏幕通过HTTPS来保护凭据。之后,所有内容都通过普通HTTP提供服务。一些屏幕是特定于客户的(比如说他最后的订单),而其他屏幕则是每个人的共同屏幕(最受欢迎的产品、促销、规则等) 考虑到预期的流量,显然我们需要一个全面的缓存策略。因此,我们正在考虑以下选择:Php 高使用率网站的缓存策略,php,caching,optimization,web,varnish,Php,Caching,Optimization,Web,Varnish,我们正在为一个频繁使用的网站设计缓存策略。 该网站由动态和静态内容组成。前端是PHP,中间层是Tomcat,后端是mysql 只有用户登录屏幕通过HTTPS来保护凭据。之后,所有内容都通过普通HTTP提供服务。一些屏幕是特定于客户的(比如说他最后的订单),而其他屏幕则是每个人的共同屏幕(最受欢迎的产品、促销、规则等) 考虑到预期的流量,显然我们需要一个全面的缓存策略。因此,我们正在考虑以下选择: 将Squid或Varnish放在PHP前面,并将其配置为缓存所有公共内容,甚至客户的订单提交表单 通
我忘了提到的另一个选项是使用PHP级缓存,比如Zend缓存,并将页面片段存储在那里。这接近于我提到的第二个选项,但它内置于Zend框架中 所以问题是,是否值得添加像Varnish这样的前端缓存,还是只在内部使用Zend缓存 再次感谢,
Philopator.我做过很多这样的项目,发现:
- 创建(完整的)定制解决方案既困难又昂贵。幸运的是你找到了Squid/Varnish、memcache和ehcache
- 站点的动态行为差异很大,您最了解您的站点,因此设计特定的缓存策略是有意义的
- 部署多层缓存是有意义的。但是,这将使站点的行为复杂化,因此您应该告诉站点的所有相关人员(例如业务人员)一些关于它的信息,并告诉您的工程师很多关于它的信息
- 想想如何调试问题。e、 g.添加指示所服务数据新鲜度的标题,允许某些人清除或避免缓存
- 定期检查不同缓存层的性能(例如,为您的机器使用nagios插件)
- 在构建任何缓存之前,请测量性能问题的位置:)
- 将某些对象缓存一段时间已经是一个非常显著的改进
我通常使用ehcache+内存存储来避免小数据集的延迟(例如数据库查询或服务请求),当有大量数据且缓存需要由多个节点共享时使用memcached。我做过很多类似的项目,发现:
- 创建(完整的)定制解决方案既困难又昂贵。幸运的是你找到了Squid/Varnish、memcache和ehcache
- 站点的动态行为差异很大,您最了解您的站点,因此设计特定的缓存策略是有意义的
- 部署多层缓存是有意义的。但是,这将使站点的行为复杂化,因此您应该告诉站点的所有相关人员(例如业务人员)一些关于它的信息,并告诉您的工程师很多关于它的信息
- 想想如何调试问题。e、 g.添加指示所服务数据新鲜度的标题,允许某些人清除或避免缓存
- 定期检查不同缓存层的性能(例如,为您的机器使用nagios插件)
- 在构建任何缓存之前,请测量性能问题的位置:)
- 将某些对象缓存一段时间已经是一个非常显著的改进
我通常使用ehcache+内存存储来避免小数据集的延迟(例如数据库查询或服务请求),当有大量数据且缓存需要由多个节点共享时使用memcached。无论您选择哪种策略,请记住,使用Varnish缓存页意味着您可以完全从PHP获得页面加载,这本身就对你能处理的流量有很大的影响。无论你采用哪种策略,只要记住,拥有Varnish缓存页面意味着你可以完全从PHP中获得页面加载,这本身就可以对你能处理的流量有很大的影响。有什么帮助吗?:)有什么帮助吗?:)