在您的网络外部,您有一个公共IP用于将所有请求路由到您的负载均衡器,该负载均衡器负责分发负载循环,因此您无法一次性清除每个服务器上缓存的请求,因为您不会在任何时候都不知道使用哪一个。但是,在您的网络中,每台机器都有自己的内部IP,并且可以直接调用。知道这一点,你可以做一些有趣/奇怪的事情,外部工作。
我喜欢的解决方案是能够打一个URL并完成一切,如http://www.mywebsite/clearcache.php或类似的东西。如果你也喜欢,请继续阅读。记住,如果你喜欢,你可以通过认证,这样你的管理员就可以实现这一点,或者你可以保护它。
您可以创建逻辑,您可以从外部发出一个请求来清除所有服务器上的缓存。无论哪个服务器收到清除缓存的请求都将具有与所有服务器通信以清除其缓存的相同逻辑。这听起来有些不可思议,有点科学怪人但在这里不用的逻辑假设我们有3个服务器采用IPS 10.232.12.1,10.232.12.2,10.232.12.3内部:
1) All servers would have two files called "initiate_clear_cache.php" and "clear_cache.php" that would be the same copies for all servers.
2) "initiate_clear_cache.php" would do a file_get_contents for each machine in the network calling "clear_cache.php" which would include itself
for example:
file_get_contents('http://10.232.12.1/clear_cache.php');
file_get_contents('http://10.232.12.2/clear_cache.php');
file_get_contents('http://10.232.12.3/clear_cache.php');
3) The file called "clear_cache.php" is actually doing the cache clearing for its respective machine.
4) You only need to make a single request now such as http://www.mywebsite/initial_clear_cache.php and you are done.
让我知道这对你的作品。我已经在.NET和Node.js中做过类似的工作,但还没有在PHP中尝试过,但我确定这个概念是相同的。 :)
这似乎更适合[专业网站管理员](http://webmasters.stackexchange.com)或[服务器故障](http://serverfault.com).. –
您可能想问这对serverfault .COM。 –