Web programlamasında neden oylama kabul edilir?


108

Şu anda görüntülerin listesini gösteren bir Ruby on Rails projesi üzerinde çalışıyorum .

Bu proje için sahip olması gereken, web sayfasını yenilemeye gerek kalmadan gerçek zamanlı olarak yeni gönderileri göstermesidir. Bir süre aradıktan sonra, PubNub gibi bazı JavaScript çözümlerine ve servislerine rastladım; Ancak, sağlanan çözümlerin hiçbiri hiçbir anlam ifade etmedi.

JavaScript çözümünde ( yoklama ) aşağıdakiler gerçekleşir:

  • Kullanıcı 1, fotoğrafların listesini görüntüler.
  • Arka planda JavaScript kodu her saniye yeni bir gönderi olup olmadığını görmek için bir son noktaya oy veriyor.
  • Kullanıcı 2, yeni bir fotoğraf ekler.
  • Yeni çevrim tetiklenmeden ve yeni verileri getirmeden önce 50 ms'lik bir gecikme olur.
  • Yeni içerik DOM'a yüklenir .

Gerçek bir dünya örneğine tercüme edildiğinde bu garip görünüyor:

  • Kullanıcı 1, masasında bir yığın fotoğraf tutar.
  • Her saniye fotoğrafçıya yürür ve yenisi olup olmadığını sorar.
  • Fotoğrafçı yeni bir fotoğraf çeker.
  • Bu saniye içeri girdiğinde fotoğrafı çekip yığına koyabilir.

Bence çözüm şu şekilde olmalı:

  • Kullanıcı 1, masasında bir yığın fotoğraf tutar.
  • Fotoğrafçı yeni bir fotoğraf çeker.
  • Fotoğrafçı yığına yürür ve geri kalanıyla birlikte koyar.

PubNub çözümü temelde aynıdır, ancak bu kez verileri paylaşmak için taraflar arasında yürüyen bir stajyer vardır.

Söylemeye gerek yok, her iki çözüm de yüklenecek veri olmadığında bile tetiklendiklerinden çok enerji tüketirler.

Bilgim devam ettiği sürece, bu tür bir uygulama yönteminin neredeyse her gerçek zamanlı uygulamada kullanılmasının neden hiçbir mantığı yoktur.


195
Bir süredir web tarayıcılarının gelen bağlantıları alabilen sunucular olmadığını dikkate almamak ... bekleyin, hayır, bunu yoksaymamıza izin verir.
GrandmasterB

17
@dennis: Sunucu ile istemci arasındaki durum bilgisi olan kalıcı bir bağlantı muhtemelen yoklama ihtiyacından kurtulur, ancak Web bu şekilde tasarlanmamıştır.
FrustratedWithFormsDesigner

58
Peki ya Websockets?
I.devries

25
Ya da uzun oylamaya bir göz atın. Temelde, anket yoksun, ancak sunucu size gösterecek herhangi bir yeni veri olmadan önce yanıt vermiyor.
Matsemann,

53
Bilgisayar alanında, et alanında yapmak tamamen saçma olan pek çok mükemmel mantıklı çözüm ve algoritma var.
whatsisname

Yanıtlar:


179

İtme 1 veya sınırlı sayıda kullanıcı için iyi sonuç verir.

Şimdi senaryoyu bir fotoğrafçı ve hepsinin resmin kopyasını isteyen 1000 kullanıcıyla değiştirin. Fotoğrafçının 1000 kazağa yürümek zorunda kalacak. Bazıları kilitli ofisinde olabilir ya da her yere yayılmış olabilir. Veya kullanıcıları tatilde ve şu anda yeni resimlerle ilgilenmiyor.

Fotoğrafçı sürekli yürümekle meşgul olacak ve yeni fotoğraflar çekmeyecekti.

Temel olarak: bir çekme / anket modeli, gerçek zamanlı gereklilikleri gevşek olan birçok güvenilmez okuyucu için daha iyi ölçeklendirilebilir (eğer bir resmin bir yığına ulaşması 10 saniye sürerse, bu sorun ne?).

Bununla birlikte, bir itme modeli birçok durumda hala daha iyidir. Gecikme süresine ihtiyacınız varsa (çekildikten sonra yeni fotoğrafa 5s gerekir) veya güncellemeler nadirdir ve sık ve öngörülebilir olmasını ister (bir fotoğrafçı günde yeni bir resim oluştururken her 10 saniyede bir sormaya devam edin), o zaman çekmek uygun değildir. Ne yapmaya çalıştığınıza bağlı. NASDAQ: itin. Hava durumu hizmeti: çekin. Düğün fotoğrafçısı: muhtemelen çekin. Haber fotoğraf ajansı: muhtemelen itin.


32
Bazıları tatildeyken, bazıları ilgilenmiyorsa 1000 kullanıcıyla olan benzetmenizi gerçekten çok beğendim. +1.
riwalk,

4
@EsbenSkovPedersen: Soket sınırı IP adresi nedeniyle değil. Maksimum açık dosya tanımlayıcısı nedeniyle. Dolayısıyla, maksimum açık soket sayısı, kaç tane IP adresi kullandığınızdan bağımsızdır.
slebetman

10
Bu hafif koymak için korkunç bir benzetme. Basmanın işe yaraması için, herhangi bir kullanıcının müşterisi bir tür açık bağlantı kurmalıdır. Aslında, yoklama bir bağlantının öykünmesidir. Bazı müşterilerin oy kullanması gibi değil , tüm müşterilere bildiriliyor. Benzer şekilde, bazı istemciler push bildirimleri için bir bağlantı açtığında , tüm istemcilere bildirilmez. Bu, kaynakları pencereden atmaya davet eden çok zayıf bir tavsiye. Saniyede 10000 istekle bombalanmak, neredeyse hiç 10000 açık soket bulundurmaktan daha ucuz ya da başka türlü daha iyi değildir.
back2dos

8
ptyx: 1s aralığı burada tartışılandır. Saniyede 10k istek, 10k TCP el sıkışmaları ve 10k HTTP istekleri (her biri kolayca 2KB'ye ulaşır) anlamına gelir; Push aboneliklerini oylamayı başlatmak kadar kolaylaştıran, savaşta test edilmiş çeşitli kütüphaneler vardır. Bütün meseleyi tamamen ortadan kaldıran meteorjs gibi çerçeveler bile var. Daha fazla açıklama yapmadan ölçeklenebilirlik için cazip olmak da pek tartışılmaz. Neyse, şüphelerimi dile getirdim ve bir tartışma başlatmak istemiyorum;)
back2dos

5
Back2dos'un yukarıdaki yorumuna katılıyorum. Çekme push'tan daha iyi ölçeklenirse, google, stack exchange, facebook, online hisse senedi hizmetleri vb. Çekme teknolojisini kullanır. Ama yapmazlar. Temel olarak, bir dinleme istasyonu kurmak yerine sunucuyu kırmak korkunç bir şekilde ölçeklenir. Büyük hizmetler yoklamadan kaçınır.
Travis J

106

Sadece bir kişinin WebSockets'ten bahsetmesine şaşırdım . Destek, temelde her büyük tarayıcıda gerçekleştirilir .

Aslında PubNub onları kullanır. Uygulamanız için tarayıcı muhtemelen yeni bir fotoğraf mevcut olduğunda yayın yapacak bir sokete abone olacaktır. Soket fotoğrafı göndermezdi, dikkat et, ama tarayıcının senkronize olmayan bir şekilde indirebilmesi için bir link.

Örnekte şöyle bir şey hayal edin:

  1. Kullanıcı (lar) fotoğrafçının gelecekteki tüm fotoğraflar hakkında bilmek istediğini bilmesini sağlar
  2. Fotoğrafçı, hoparlörden yeni bir fotoğrafın mevcut olduğunu söylüyor
  3. Kullanıcı fotoğraf için fotoğrafçı ister

Bu, orijinal örnek çözümünüze benziyor. Oy vermekten daha etkilidir, çünkü müşterinin sunucuya herhangi bir veri göndermesi gerekmez ( kalp atışları hariç ).

Ayrıca, diğerlerinin de belirttiği gibi, eski tarayıcılarda çalışan basit oylamadan daha iyi başka yöntemler de vardır ( longpolling, et al .)


43
@RobertHarvey WebSockets nasıl bir soru ile ilgili değil? Soru, oylamanın kabul edilebilir bir strateji olup olmadığını soruyor ve günümüzde açıkça kabul edilemiyor (veya en azından optimal değil). WebSockets, Sunucu tarafından gönderilen olaylar ve uzun sorgulama, neredeyse her kullanımda daha iyi performans gösterir.
Fabrício Matté

7
@RobertHarvey bu sadece benim yorumumdu, görebildiğim kadarını yeniden çerçevelemek yok. Elbette, soru neden hala kabul edildiğini ve en uygun stratejinin ne olduğunu değil , ancak bunlar hala sıkı bir şekilde ilişkili olduğunu sordu.
Fabrício Matté

25
WebSockets (ve benzeri) OP'nin "çözümünü" uygulamak için alabileceğiniz en yakın şeydir, bu yüzden özel olarak bahsetmemesine rağmen bunun çok alakalı olduğunu düşünüyorum.
korylprince

6
Bahsetmiyorum bile, StackExchangeşu an bulunduğunuz gibi (bu web sitesine önbelleğe alınmış / kaydedilmemişseniz bakmazsanız) siteler kullanın WebSockets. Bu yüzden de neden @ korylprince'den bahsedene kadar kimsenin olmadığını merak ediyordum WebSockets.
trysis

6
@ FabrícioMatté: aslında, her kullanım senaryosunda değil. Uzun sorgulama, sistem kaynaklarını alan her kullanıcı için soketi açık tutmayı gerektirir. Çok kritik olmayan ancak çok fazla kullanıcısı olan Fr hizmetleri, bir soketi açık tutmak genellikle şu an kısa bir 304 servis yapmaktan daha pahalıdır. Çoğu hizmet için hafif bir gecikme sorun değildir. Tek bir makine genellikle itme ile daha fazla müşteriye hizmet verebilir.
Lie Ryan,

42

Bazen yeterince iyi, yeterince iyidir.

Bir "gerçek zamanlı" iletişim sürecini uygulamak için mümkün olan bütün yollar arasında, yoklama belki de en basit yoldur. Yoklama aralığı nispeten uzun olduğunda (yani anlık değil saniyeler, dakikalar veya saatler) olduğunda ve bağlantı veya kaynağın kontrol edilmesiyle tüketilen saat döngüleri gerçekten önemli değilken, yoklama etkin bir şekilde kullanılabilir.


3
Bu, bunun bin katı. Kabul edildi, çünkü genellikle yeterince iyi.
corsiKa

1
Bu yeterince iyi bir cevap
Zain R

31

HTTP protokolü, istemcinin isteği başlatan OLMASI nedeniyle sınırlıdır. Bir müşterinin isteğine cevap vermedikçe sunucu müşteri ile iletişim kuramaz.

Dolayısıyla gerçek dünyadaki örneğinizi ayarlamak için aşağıdaki kısıtlamayı ekleyin:

  • Kullanıcı 2, SADECE Kullanıcı 1'in sorularına tek bir cümle cevabı ile cevap verebilir, daha sonra Kullanıcı 1'in bırakması gerekir. Kullanıcı 2'nin başka bir iletişim yolu yoktur.

Bu yeni kısıtlamayla, yoklama dışında nasıl yaparsın?


6
HTTP 2.0, sunucu pushlarını destekleyecektir. "Push, sunucuların, istemciler için açık bir istek yapmadan istemciler göndermelerini sağlar." en.wikipedia.org/wiki/HTTP_2.0
kaptan

5
@kaptan, bu harika, ancak mevcut değil. Sahip olduklarınızı yapın.
riwalk,

7
Şu anda mevcut olan ve bir çekme kullanarak bir itme modelini taklit eden uzun sorgulama da var.
Tim B,

24
@dennis: Yazılı endüstriyel otomasyon yazılımına sahip olmak için sadece sensörler anketinizle ilgili yorum yapmak istiyorum. Yoklama sensörleri iki amaca hizmet eder - en açık olanı yeni veri toplamaktır. Daha az belirgin olanı, sensörün hala hayatta olduğunu, bir hata veya yanma nedeniyle çarpılmadığını, fabrika yangını nedeniyle veya endüstriyel kaza nedeniyle erimiş olduğunu tespit etmektir. Sessizlik, cevap alamadığınız gerçeği de değerli verilerdir.
slebetman

3
@dennis Sensörleri genellikle verilerle ilgilendiğinizden çok daha hızlı algılar. Yoklama, sensör değerini tam olarak istediğiniz zaman elde etmenize, umursamadığınız güncellemelere maruz kalmadan almanıza olanak tanır. (Uygulamanızın dosyayı açıp okumak zorunda kalması yerine, herhangi bir dosya diskte herhangi bir yerde değiştiğinde, işletim sisteminizin başvurunuzu bildirdiğini hayal edin)
immibis

13

Yoklama neden kabul edilir? Çünkü gerçekte her çözüm aslında düşük seviye sorgulamadır!

Sunucunun yeni resimler kullanılabilir olur olmaz sizi güncellemesi gerekiyorsa, genellikle sizinle bir bağlantısı olması gerekir - çünkü IP adresleri sık sık değişir ve birileri artık ilgilenmiyorsa asla bilemezsiniz, bu nedenle müşterinin bir form göndermesi gerekir. canlı tutma sinyali, örneğin, "Hala buradayım, çevrimdışı değilim"

Tüm durum bilgisi olan bağlantılar (örneğin, TCP / IP) aynı şekilde çalışır, çünkü yalnızca İnternet üzerinden tekil veri paketleri gönderebilirsiniz; karşı tarafın hala orada olup olmadığını asla bilemezsiniz.

Yani her protokolün bir zaman aşımı vardır. Bir işletme X saniye içinde cevap vermezse, öldüğü varsayılır. Dolayısıyla, sunucu ile istemci arasında yalnızca açık bir bağlantınız olsa bile, herhangi bir veri göndermeden, sunucunun ve istemcinin düzenli canlı tutma paketleri göndermesi gerekir (aralarında bir bağlantı açarsanız bu düşük seviyede ele alınır) - ve Sonunda bu seçimden farklı mı?

Bu yüzden en iyi yaklaşım muhtemelen uzun sürecek:

Müşteri siteyi yükledikten hemen sonra bir istek gönderir (örneğin, fotoğrafçıya "Yeni resim olup olmadığını söyle"), ancak yeni resim yoksa sunucu yanıt vermez. Talep zaman aşımına uğradığı anda müşteri tekrar sorar.

Sunucunun şimdi yeni resimleri varsa, yeni resimler için sıraya giren tüm istemcilere hemen cevap verebilir. Dolayısıyla, yeni bir resimden sonraki tepki süreniz itme işlemine göre daha kısa sürüyor, çünkü müşteri hala bir cevap için açık bir bağlantıda bekliyor ve müşteriyle bir bağlantı kurmak zorunda değilsiniz. Ve istemciden sorgulama istekleri, bir cevap için istemci ile sunucu arasındaki sürekli bir bağlantıdan daha fazla trafik değildir!


Her çözümün düşük seviyeli bir oylama olduğu sonucuna katılıyorum. Bir müşterinin ne zaman kaybolduğunu bilmek için gereken sorgulama ile veri göndermek için gereken sorgulamayı karıştırıyorsunuz. Evet, sonuncusu daima protokol yığınının altına bir yerde oylama yapacaktır, ancak bu, çok düşük bir sıklıkta olabilir (örneğin her beş dakikada bir), gerçek veriler için oylama her saniye gerçek itme bildirimleriyle önlenebilecek bir atıktır Bu yığının herhangi bir seviyesinde yoklama değildir.
Allon Guralnek

İlk olarak çoğu saklama paketi oldukça yüksek bir frekansta çalışır, çünkü ortak zaman aşımı aralıklarından kaçınmak istediğiniz için TCP / IP için çok az saniye nadir değildir ve tcp kullanmayan hemen hemen her şey güvenlik duvarları tarafından engellenebilir. Öyleyse, her X saniyede bir veri paketi göndermem gerektiğinde, neden neredeyse hiçbir ücret ödemeden bazı verilerle doldurmuyorsunuz?
Falco

1
@Guralnek 5 dakika canlı tutma aralığına sahip olsanız bile, zaman aşımı süresi daha yüksek olacaktır, çünkü gerçek gecikme ve kayıp paketleri eklemelisiniz. Ve istemcilerin bağlantısı kesildikten sonra sunucu 5 dakika boyunca pek çok bağlantı kurardı, bu nedenle genel olarak bu yalnızca minimum bant genişliğini korurken daha fazla sunucu kaynağına mal olur
Falco

1
Uzun sorgulama için +1. Comet'e bakınız en.wikipedia.org/wiki/Comet_%28programming%29
Zan Lynx

9

Oy verme işleminin bir avantajı, bir mesajın kaybolması veya bir şeyin durumuna yol açması durumunda oluşabilecek zararı sınırlandırmasıdır. Eğer X her beş saniyede bir Y durumu isterse, bir isteğin veya bir cevabın kaybedilmesi yalnızca X'in bilgisinin 5 yerine on saniyenin 10 saniye olmasına neden olur. Y süresi, X'in mesajlarından birine cevap verebilir. Eğer X yeniden başlatılırsa, daha sonra herhangi bir şey için Y'yi istemekten asla rahatsız olmaz, ancak X'in durumunu gözlemleyen kişi yeniden başlatıldığını kabul etmelidir.

X'in Y yoklaması yerine, X, durumu ne zaman değiştiğini bildirmek için Y'ye güvenirse, o zaman Y'nin durumu değiştiyse ve X'e bir mesaj gönderirse, ancak bu mesajın alınmamasının sebebi ne olursa olsun, X asla değişimin farkına varmayabilir . Aynı şekilde, Y yeniden başlatılırsa ve X'e herhangi bir şey hakkında bir mesaj göndermek için hiçbir neden olmazsa.

Bazı durumlarda, X'in Y'nin durumuyla, periyodik olarak veya değiştiğinde kendi durumuyla özerk olarak mesaj göndermesini istemesi ve Y'den hiçbir şey duymadan çok uzun sürerse X anketinin yapılmasını istemek yararlı olabilir. X'in iletilerinin çoğunu göndermesi gerekebilir (tipik olarak, X en azından bazen Y'ye hala ileti almakla ilgilendiğini bildirmeli ve herhangi bir ilgi belirtisi olmadan çok uzun sürerse ileti göndermeyi durdurmalıdır). Bununla birlikte, böyle bir tasarım Y'nin ısrarla olmasını gerektirirX ile ilgili bilgileri saklamak yerine, basitçe kime cevap verenlere bir cevap gönderebilmek yerine, kim olduğunu hemen unut. Eğer Y gömülü bir sistem ise, böyle bir basitleştirme daha küçük ve daha ucuz bir kontrol cihazının kullanımına izin vermek için bellek gereksinimlerini yeterince azaltmaya yardımcı olabilir.

Yoklama, potansiyel olarak güvenilmez bir iletişim ortamı (örneğin, UDP veya radyo) kullanıldığında ek bir avantaja sahip olabilir: bağlantı katmanı onaylama ihtiyacını büyük ölçüde ortadan kaldırabilir. X, Y'ye bir durum isteği gönderirse, Y, R durum raporuna yanıt verir ve X, R duyarsa, X'in alındığını bilmesi için, Q için herhangi bir tür bağlantı katmanı onayını duyması gerekmez. Bunun tersine, Y R gönderdiğinde, X'in alıp almadığını bilmesi ya da önemsemesi gerekmez. X bir durum isteği gönderir ve yanıt alamazsa, başka bir tane gönderebilir. Y bir rapor gönderirse ve X duymazsa, X başka bir istek gönderir. Her istek bir kez dışarı çıkarsa veya bir yanıt verirse veya vermezse, taraflardan herhangi birinin belirli bir mesajın alıp alınmadığını bilmesi veya umursaması gerekir. Bir onay gönderme, bir durum isteği veya rapor kadar neredeyse bant genişliği tüketebileceğinden, bir istek raporu turu kullanmak, istenmeyen bir rapordan ve onaydan daha pahalıya mal olmaz. X yanıt vermeden birkaç istek gönderirse, bazı dinamik olarak yönlendirilmiş ağlarda, bağlantı düzeyinde onaylamaların etkinleştirilmesi gerekebilir (ve isteğinde Y'nin de aynı şekilde yapılmasını isteyin) böylece altta yatan protokol yığını teslimat sorununu tanıyabilir ve arama yapabilir. yeni bir rota, ancak işler çalıştığında, bir istek raporu modeli bağlantı düzeyinde onaylar kullanmaktan daha etkili olacaktır.


Y ile X mesajlarını iterek (ikinci paragraf) konuştuğunuz problem, her mesaja seri numarası eklenerek giderilebilir. Bir mesaj kaybolursa, X bu seriyi almadığı için bilecektir. Bu noktada Y. ile senkronize etmek için başka önlemler alabilir. DNS master -> slave replikasyon bu şekilde çalışır.
korylprince

@korylprince: Her iki taraf da eksik mesaj hakkında, diğer tarafın bir şeyleri gönderme fırsatını yakalarsa (ve başarılı bir şekilde yaparsa) ya da diğer taraftan bir şey beklemek için bir nedeni varsa ve asla almadığını öğrenebilir. Bir taraf bir durum güncellemesi gönderirse veya herhangi biri onay gerektirmiyorsa veya birkaç kez yeniden denedikten sonra pes ediyorsa ve diğer taraf planlanmış yayınları beklemiyorsa, diğer taraf bağlantının kaybolduğunu bilemez.
supercat

2
@korylprince - Sorun, periyodik mesajlar olmadan, X'in eksik mesajı bir gün geç veya bir yıl geç veya 10 yıl geç olarak tespit etmesidir. Eksik paketi makul sürede tespit etmek için bir şekilde anket yapmanız gerekir. Anketi "çekebilir" veya anketi "itebilir". İlk denilen "yoklama" ikinci denilen "kalp atışı"
slebetman

Her ikisi de çok doğru. Herşey duruma bağlı.
korylprince

@slebetman: Y yeniden alırsa periyodik mesajlar olmadan, X hangi tarafından hiçbir mekanizma olabilir hiç keşfeder.
supercat

1

Asıl soru, gereksiz baskı miktarını ve gereksiz baskı miktarını dengelemek.

Eğer anket yaparsanız:

  • Şu anda bir cevap alıyorsunuz. Sadece ara sıra sormak ya da bu anı ayarlamak için bir veriye ihtiyacınız varsa iyi.
  • "İçeriksiz" cevabını bulabilir ve hatta çizgide anlamsız yüklere neden olabilirsiniz.
  • Yükü, yalnızca yoklama yaptığınızda, ancak her zaman yoklama yaptığınız zaman hatta yüklersiniz.

İtersen:

  • Cevabı, uygun olduğunda, müşteri tarafında anında işlem yapılmasını sağlayan bir şekilde teslim edersiniz.
  • Bu verilerle ilgilenmeyen istemcilere veri iletebilir, hatta hatta anlamsız yüke neden olabilirsiniz.
  • Her yeni veri olduğunda, hatta yalnızca yeni veriler olduğunda yükü yüklüyorsunuz.

Çeşitli senaryolar ve bunların dezavantajları ile nasıl başa çıkılacağına dair çeşitli çözümler vardır; örneğin, anketler, ana sistemden yük almak için yalnızca anketler arasındaki asgari süre, veya - ittirmeler için - kayıt ve belirtme için bir düzenleme İstenen verileri takiben oturum kapatma kaydının silinmesini takiben Hangisinin en iyi uyduğu, genel olarak söyleyebileceğiniz hiçbir şey değildir, sisteme bağlıdır.

Örneğinizde yoklama en etkili çözüm değil, en pratik çözümdür. JavaScript'te bir sorgulama sistemi yazmak çok kolay ve bunu teslim tarafında da uygulamak çok kolay. Görüntü verilerini iletmek için yapılan bir sunucu, ekstra istekleri yerine getirebilmelidir ve verilmezse, veriler çoğunlukla statik olduğundan ve bu nedenle kolayca önbelleğe alınabildiği için doğrusal olarak ölçeklendirilebilir.

Bir oturum açma, istenen verilerin tanımı ve son olarak oturum kapatma işlemlerini uygulayan bir itme yöntemi en verimli olur, ancak ortalama "script-kiddy" için çok karmaşıktır ve şu soru ile ilgilenmesi gerekir: kullanıcı ne olursa olsun sadece tarayıcıyı kapatır ve oturumu kapatılamaz?

Belki başka bir önbellek sunucusunda biraz para kazanmaktan daha fazla kullanıcıya sahip olmak (erişim kolaydır) daha iyidir.


1

Bazı nedenlerden dolayı, bu günlerde, tüm genç web geliştiricileri geçmişin derslerini ve bazı şeylerin neden bu şekilde geliştiğini unutmuş gibi görünüyor.

  1. Bant genişliği bir sorun oldu
  2. Bağlantı kesintili olabilir.
  3. Tarayıcılar kadar bilgi işlem gücüne sahip değildi
  4. İçeriğe erişmenin başka yöntemleri vardı. Web w3 değil.

Bu kısıtlamalar karşısında, sürekli bir 2 yönlü iletişimin olmayabilir. Ve eğer OSI modeline bakacak olursanız, kaygıların temelini oluşturan bağlantı ile kalıcı kılmayı amaçladıklarını göreceksiniz.

Bunu akılda tutarak, bilgi çekme yöntemi, müşteri tarafında bant genişliğini ve hesaplamayı azaltmanın harika bir yoludur. İtişin yükselişi, gerçekten sadece müşterinin sürekli oylama ya da web soketleri yapmasıdır. Şahsen, dışarıdaki herkes olsaydı, zaman zaman GET / POST isteğinin bir tür orta durumdaki bir erkeğe işaret vereceği, sorgulamanın düzenini trafik analizi aracı olarak takdir ederdim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.