在您的網絡外部,您有一個公共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。 –