First of all, the website I run is hosted ve I don't have access to be able to install anything interesting like memcached.
Ben HTML tabloları gösteren birçok web sayfaları var. Bu HTML tablolar için veri pahalı ve karmaşık MySQL sorguları kullanılarak üretilir. Ben bildiğim kadarıyla olabildiğince sorguları optimize edilmiş ve performansını artırmak için yerine dizinleri koyduk. Sorun siteme yüksek trafik varsa MySQL sunucu dövülmüş ve mücadeleler gets.
İlginçtir - MySQL tablo içinde veri çok sık değişmez. Aslında sadece birkaç haftada gerçekleşen belirli bir 'olay' sonra değiştirir.
Peki ben şimdi yaptım şudur:
- Bir kez dosyaya oluşturulan HTML tablosunu kaydetmek
- URL erişildiğinde Varsa kaydedilen dosyayı kontrol edin
- Dosya 1 saat daha eski ise, sorguyu çalıştırmak ve çıkış, dosyayı yeni bir dosya değilse kaydetmek
Bu çok hızlı istekleri sayfayı yükler ve verilerin büyük çoğunluğu için en 1saat eski olabilir sağlar. Benim amaç için bu çok kötü değil.
Gerçekten ne istiyorum veritabanındaki herhangi bir veri değişiklikleri, önbellek dosyası silinirse garanti etmektir. Bu could tablo üzerinde herhangi bir değişiklik sorguları tüm komut bulma ve önbellek dosyasını kaldırmak için bir kod ekleyerek yapılabilir, ancak tüm gelecek değişiklikler de bu mekanizmanın dikkat çekmek gerekir gibi çürük bulunuyor.
Is there an elegant way to do this?
Ben vanilya PHP ve MySQL (son sürümleri), ancak bir şey yok - Ben memcached oynamak isterim, ama yapamam.