Yüksek gecikme web hizmetleri API'leri ile başa çıkmak için memcache - iyi bir fikir?

3 Cevap php

Ben bu nesneleri içeren bir web sayfası oluşturma önce bazı nesneleri almak için web hizmetleri API'lerini çağırır bir PHP uygulama var. Bazı durumlarda bu API'leri (saniye) gerçekten yavaş ve bu görüş bir kullanıcı deneyimi açısından kabul edilebilir değildir. İki şey ben yapabilirim biliyorum ...

  1. Ajax kullanmak ve arka planda bu çağrıları yapmak
  2. Zaman çağrı dışarı ve çok uzun sürüyor ise incelikle aşağılamak

Ideal, bu yüzden ben 3. parti web hizmetinden almak nesne önbelleğe memcache (memcached için PHP uzantısı) kullanılarak düşünüyordum ne. Nesneleri aynı sayfa yüklenirken farklı kullanıcılar tarafından birçok kez yüklenir, bu nedenle bu mantıklı görünüyor.

Nesneleri, nispeten küçük (~ 1 k) 'dir.

Makul bir yaklaşım gibi geliyor bu ses? Ben memcached başlangıçta veritabanı yükünü hafifletmek için tasarlanmış biliyorum, ben görmüyorum, bir yakaladım yerde olup olmadığını merak ediyorum.

Teşekkürler.

3 Cevap

Bu memcache tamamen meşru bir kullanımıdır. Bu sadece bir veritabanı yük azaltılması için, genel olarak önbelleğe alma ve nesne depolama içindir. :)

Ayrıca PHP memcached için iki arabirimi var, unutmayın. Karıştırmamak gibi, "memcache" olarak adlandırılır ve "{[(1)"}]. Ikisi arasında almak için bu okuyun:

Ben çok bu durumdan o olacak gibi memcache için tavsiye ederim:

  1. DNS aramalarını azaltın.
  2. Sayfa gecikmesini azaltmak.
  3. Bant genişliği kullanımını azaltın.

Sizin tek gerçek görev ile ilgileniyor veri değişen olacak ne sıklıkta tespit etmektir. Bu önbellek anahtarının (ler) için zaman aşımı süresini optimize etmek için size yardımcı olacaktır.

Bu yaklaşım, durum sizin için çalışmaz, ama daha hızlı veri kaynağına (XML veya veritabanı) için önbelleğe sonra gerekli bilgileri yükler bir PHP komut dosyası çağırmak için cron işleri kullanabilirsiniz.

Bu işe yaramayabilir bilgi gerçekten sık sık güncellenen ya da orada yüklenen gereken farklı verilerin bir sürü, ama eğer bir seçenek ise. Ben tamamlamak için çok fazla zaman alır ve makul bir çözüm bulduk, diğer görevler için bu yaklaşımı kullandım.