我希望在 PHP 应用程序中编写一个基本的 PHP 文件缓存驱动程序,将所有流量路由到前端控制器。例如,假设使用 apache mod_proxy_balancer 进行以下简化设置:
在单服务器环境中,我会将请求响应缓存在磁盘上与请求 URI 匹配的目录结构中。然后,像下面这样简单的 apache 重写规则可以允许 apache 返回静态缓存文件(如果它们存在)并完全避免 PHP 进程:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /front_controller.php [L]
显然,这在负载平衡的环境中是有问题的,因为缓存文件只会被写入提供请求并缓存结果的特定 PHP 服务器上的磁盘。
解决问题...
所以,为了解决这个问题,我想我可以敲出一些代码,让各个后端 PHP 服务器向负载均衡器写入/删除缓存数据。但是,由于对 mod_proxy_balancer 的功能(以及任何其他负载平衡选项,真的)一无所知,我需要对以下问题进行一些外部验证:
还有问题...
- 是否可以像上面的 RewriteRules 那样进行某种形式的检查,让前端负载均衡器在向其中一个后端服务器发送请求之前提供静态文件?
- 这甚至是可取的吗?负载均衡器是否应该被允许专门路由流量而不为提供静态内容而烦恼?
- 在 PHP 服务器级别的缓存文件上使用可接受的 TTL 并处理可接受的陈旧缓存重叠级别会更好吗?
最后,如果这太宽泛或已经得到回答,请道歉;由于上述对负载平衡主题的无知,我不确定要搜索什么。