在多个AWS ECS Fargate任务中清除NGINX FastCGI缓存



我有一个使用ECS Fargate托管在AWS上的PHP WordPress应用程序。该应用程序由一个ECS服务任务组成,运行多个任务以在ALB后面进行扩展。每个任务都使用启用了FastCGI缓存的NGINX,每当有东西保存在WordPress CMS/admin面板中时,它都会使用WordPress插件(NGINX Helper(清除NGINX缓存。如果需要的话,我也可以为此编写一些自定义的PHP代码。

问题是,每个ECS任务都有自己的NGINX实例,所以它只是为特定的ECS任务清除FastCGI缓存。WordPress应用程序目前有一个Dockerfile引用了一个自定义的NGINX ECR存储库,类似于:

FROM xxxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/my-nginx

我已经在我的设置中使用了CloudFront,但它似乎没有经常缓存动态页面(除了简单的页面和资产/图像等,大多数时候都会"错过CloudFront"(,因此添加了FastCGI缓存。

  • 当为高流量PHP站点正确配置时,我应该能够单独依赖CloudFront吗?还是在这里使用NGINX FastCGI缓存仍然是个好主意
  • 在WordPress CMS中保存时,如何清除这些多个ECS任务中的NGINX FastCGI缓存?已经有了/purge/URL端点设置,所以如果我能为每个正在运行的ECS任务触发它,那就可以了。或者我可以编写一些自定义的PHP代码来清除缓存,所以只需要为每个正在执行的任务触发一个PHP文件。我可以使用AWS PHP SDK或类似SQS的软件来解决这个问题吗
  • 是否更容易/建议在所有东西之上使用Cloudflare之类的东西

谢谢!

  • 在为高流量PHP站点正确配置时,我应该能够单独依赖CloudFront,还是使用NGINX FastCGI缓存这里还是个好主意

不,正如您所看到的,单靠CloudFront无法提供足够的缓存。

  • 在WordPress CMS中保存时,如何清除这些多个ECS任务中的NGINX FastCGI缓存?已经有/preege/URL端点设置,所以如果我可以为每个正在运行的ECS任务触发它那就可以了。或者我可以写一些自定义的PHP代码来清除缓存,所以只需要在每个运行的任务上触发一个PHP文件。我可以使用AWS PHP SDK或类似SQS的软件来解决这个问题吗

您需要的是分布式缓存机制,如Redis或Memcached,但我认为FastCGI缓存不支持使用这样的机制。您可以考虑编写一些自定义的PHP代码,将消息发送到SNS主题,并让所有服务器侦听该主题(使用其他一些自定义PHP代码(,并在收到消息时触发缓存重置。

  • 是否更容易/建议在所有内容之上使用Cloudflare之类的东西

Cloudflare在缓存WordPress网站方面绝对比CloudFront更好,尤其是在APO方面。启用APO+分层缓存+缓存保留后,您将看到很少的缓存未命中返回到您的WordPress服务器。

最新更新