2011-06-22 14 views
5

Durumumu basitleştirmek için; 3 PHP sayfam var. Bunlardan ikisi, sırasıyla bir veritabanından satır ekler ve kaldırır. Üçüncü, tüm satırları getirir, bunları JSON olarak kodlar ve sonucu yazdırır.Bazı AJAX çağrıları, URL'lerin aynı yanıt süresine sahipken neden diğerlerine göre daha uzun sürüyor?

Tüm sayfaların yürütme zamanını 0,001 ile 0,004 saniye arasında değiştirdim.

JSON olarak tüm tabloyu getir: İşte Ajax zamanlamaları ancak aramaların olan 8-12ms
Ekleme sıra: 990-1010ms
Kaldır satır: eklenti 990-1010ms

tepki süresi ve PHP yürütme süreleri saniyeler sadece fraksiyonları olduğunu göz önünde bulundurarak ve uygulama zamanlarında gereksiz durgunluğa neden oluyorlar ve çıktıları başarı için "1" ve başarısızlık için "0" dır. JSON olarak 100 satır (~ 10 sütun) veri)

Tüm Ajax iade zamanlamalarım Firebug'da ölçülür. Tüm Ajax çağrıları jQuery ile yapılır ($.ajax()).

Bunun, Firefox ile belirli bir miktarda bayt veya karakter almadıkça bir GET isteğini yanıtlamadığını ve 1 saniyelik yanıt süresinin bir tür zaman aşımı olduğunu düşünmüyorum.

Sorun hakkında paylaşılacak herhangi bir bilginiz var mı?

Opera:


Ben Chrome ve Opera yanı (Ortalamalara) AJAX yükleme sürelerini zamanlanmış ettik
* Tüm AJAX çağrıları ~ 15 ms

Krom:
* Kaldır satır ve getirme satırları: ~ 25ms
* Satırı ekle: ~ 350ms

Uygulamam, Opera'da hızlı ve hızlı yanıt veriyor ancak yanıt vermiyor diğer tüm tarayıcılarda değişen bir derece. Tam olarak neden hala bana net değil.


Pratik olarak Opera'ya benzer performans gösteren IE 9'u da zamanladım. Uygulamam şimdi iki tarayıcıda hızla çalışıyor.

+0

Kodu (PHP, HTML, JavaScript ve MySQL) yükleyebilir misiniz? Ve veritabanı ne kadar büyük? (Doların sayısı) –

+0

Ryan Doherty: Korkarım ki, bu özel bir proje. MySQL sorgularını içeren ve PHP'yi 1 saniyelik gecikmenin nedeni olarak hariç tutan PHP yürütme zamanlamalarını zaten özetledim. Görmek istediğiniz herhangi bir özel kod parçacığı – Hubro

+0

sağlayabildiğinden emin olabilirim. Doğrudan istendiğinde her sayfanın yükleme süresini ölçmeyi denediniz mi, ajax ile değil mi? PHP betiğinizin çalıştırılmasından önce bazı ek yüklere sahiptir (bir çeşit çerçeve kullanıyorsanız daha fazla). –

cevap

1

Görünüşe göre bazı tarayıcılarda gizemli yan etkiler, URL'de 127.0.0.1 yerine localhost kullanılıyor. Eklenen tam gecikme süresi onlardan biriydi. 127.0.0.1'u kullanmak sorunu benim için çözdü.

+0

bir DNS sorunu gibi geliyor –

+0

Çoğu tarayıcıda farklı davranıyorsa hala bir DNS sorunu olabilir mi? – Hubro

+1

Daha az olasıdır, ancak tarayıcılar kendi DNS önbelleklerini ve bunun gibi şeyleri uyguladıkları için hala mümkündür (sadece tarayıcıların * yapmıyor olduğunu * söylüyorum * sadece sistemin 'gethostbyname()') –

0

HTTPWatch'u kullanırsanız daha iyi olacaktır. Bu, tüm js dosyasının ve css ve sayfa oluşturma vb. Tam zamanını size söyleyecektir, bu şekilde daha fazla zaman harcar ve neden olduğunu analiz edebilirsiniz. sorunuzu cevapladığınızdan emin değilim, ancak HTTPWatch'dan yardım alabileceğinizi umuyoruz.

Here

istek zamanı en aza indirerek site performansını artırmak için nasıl söyleyecektir iyi bir makale var.

-1

Bu konuda temel almak hiçbir bilgiye sahip, ama benim tahminim şu anda bu suçlularından biridir:

  • Yavaş disk (ler) - (ekleme ve okur daha satırları silme fazla disk erişim gerektirebilir artı MySQL sorgu önbelleği)
  • Dizinleri'ni yapıyor olabilir - MySQL bir sütun değişti ya da kod profil gerektiğini Barring

eklendiğinde bu endeksler var güncellemek zorundadır. Ne kadar sürdüğünü görmek için xdebug kullanın ve/veya MySQL sorgularınızı doğrudan MySQL üzerinden çalıştırın.

+0

Soruma göre, MySQL veya PHP'yi gecikmenin nedeni olarak hariç tutuyorum. Apache veya Firefox'un neden olması gerekiyor. – Hubro

+0

Bunları nasıl hariç tutarsınız? Sorgularınızı tek tek test ettiniz mi? PHP'nizi profillediniz mi? Veritabanını sorgulamadan AJAX çağrılarını çalıştırdınız mı? –

+0

Basitçe baştan sona sayfaların her biri için PHP yürütme zamanladım – Hubro

İlgili konular