PHP Flush: ne sıklıkla ve En İyi Uygulamalar

4 Cevap php

Ben sadece bu yazıyı okuduktan: http://developer.yahoo.com/performance/rules.html#flush ve zaten benim sayfa yük (baş, css, üst banner / arama / nav) üst kısmından sonra bir floş hayata geçirdik.

Kızarma herhangi bir performans bulunanlar var mı? Çok sık yapıyor gibi bir şey var mı? En iyi uygulamalar nelerdir?

Ben, veri için harici API vurmak için kullanıcı verileri geri gelmek için bu bekleyen değil böylece elden önce temizlemek için mantıklı olur, ve en azından elden önce bazı verileri alabilirsiniz gidiyorum?

Şimdiden herkese teşekkürler.

4 Cevap

Açıklanan teknik güzel görünüyor, ancak birkaç tuzaklar vardır:

1) PHP komut dosyası başlangıç ​​ve bitişi arasındaki zaman iletim zaman göre küçük; Ayrıca, bu kaynağa göre, 0,5 saniye hakkında kullanıcıyı kaydeder. Bu sizin için zaman önemli miktarda?

2) Bu teknik, gzip çıktı tamponlama ile çalışmıyor

Eğer çok sık yıkayın eğer 3), aslında () yavaş, gürültülü bağlantılarda yükleme süresini artırmak olabilir, floş neredeyse boş bir paket göndererek olacak.

Floş kez 4), herhangi bir daha başlıklarını gönderemiyorum

5) (küçük sorun) sunucu yanıt istemci (dolayısıyla dosya indirirken) "x% done" göstermeyecektir önceden boyutunu bilmek anlamına gelir ki, yığın halinde kodlama gelecektir.

Eğer komut çoooook süre (20 + saniye) çalıştırmak için beklemek durumunda Öte yandan, bu bağlantıyı aşımından gelen tarayıcı tutmak için (örneğin boşluk,) bazı veri göndermek için gerekli olabilir.

Aşağı tarafı da afaik kızarma gibi içeriği gziplemek edemez, bu yüzden ben her zaman yerine floş daha gziplemek tercih ettik.

Some versions of Microsoft Internet Explorer will only start to display the page after they have received 256 bytes of output, so you may need to send extra whitespace before flushing to get those browsers to display the page.

Daha veriler çok yararlı değildir dolgu gibi görünüyor bu, bu değil fikir yapar.

Ben floş gerçekten bir ince ayar mekanizması olduğunu düşünüyorum. Tarayıcılar sadece (tarayıcıya bağlıdır) içeriği indirmek için yaklaşık 8 konuları kullanın. Eğer 15 görüntüler varsa, tarayıcı 8 görüntüleri indirmeye başlayacak ve daha sonra başlığından sonra, temelde tarayıcı anlatıyorsun kızarma By sonraki görüntüyü, vb indirme başlayacak, onlardan biri tamamlanıncaya kadar başka bir şey indirmek değil ne o indirmeye başlayabilirsiniz. Zaman sayfanın geri kalanı (yani 0,5 saniye sonra) teslim edilir, tarayıcı zaten css ve javascript dosyaları indirirken bitmiş olabilir. Bu, diğer içerik indirme konuları serbest olacak.

Muhtemelen doğru başlığından sonra başka herhangi bir yerde floş kullanmak istemiyorum. Bir tarayıcı genellikle kapatılmamış html etiketleri hale olmayacak, böylece kısmi bir sayfa teslim herhangi bir hızlı şeyleri göstermez. IE eski sürümleri veri belirli bir miktar alınana kadar hiç bir şey göstermez, ya da sayfa teslimi tamamlandı.

Piskvor görüşünü takiben - Bir 20s + beklemek bekliyoruz, sen (gzip'lenmiş olabilir) temel bir sayfa sağlayarak ve yavaş bir süreç bittiğinde sayfayı güncellemek için Ajax kullanarak daha iyi olabilir. Eğer olsa, statik html temel yararlılığını ihlal başlar.