
200 milisaniye: tek bir HTTP isteğinin tüm yaşamını izleyen etkileşimli sayfa
thenodebook.com'daki «200 Milliseconds» sayfası tek bir HTTP isteğini 211,4 milisaniyelik ömrü boyunca izliyor — San Francisco'da bir kafede verilen tıklamadan sipariş onayına kadar.
thenodebook.com'daki etkileşimli «200 Milliseconds» sayfası, tek bir HTTP isteğini 211,4 milisaniyelik ömrü boyunca takip ediyor: Salı sabahı 9:41'de San Francisco'da bir kafede biri Buy düğmesine basıyor ve 211,4 ms sonra ekranda «Order confirmed» yazıyor. Tıklayan kişi hiçbir gecikme fark etmedi. Sayfanın tepesindeki saat tam ve t = 0,211400 s'de duruyor; anlatı kısa bir ders için durakladığında saat donuyor, kaydırmaya devam edince zaman yeniden işliyor.
Yolculuk
İstek yedi durak geçiyor: kafenin Wi-Fi'sindeki dizüstü, radyo sinyalini alıp kabloya aktaran erişim noktası, kafenin internet sağlayıcısı, San Francisco ile Virginia'daki Ashburn arasındaki yaklaşık 4.700 km fiber, arkasında dört Node.js süreci bulunan yük dengeleyici, sunucu sürecinin kendisi (PID 1447, 23 gün önce devreye alınmış) ve 0,35 ms uzaklıktaki PostgreSQL veritabanı. Onay ekrana geldiğinde istek ve yanıtları Kuzey Amerika'yı altı kez geçmiş, başkalarının yüz milyon satır kodunu çalıştıran kırk kadar makineden geçmiş olacak.
Saat nereye gidiyor?
İlk beş milisaniye donanım ve tarayıcı muhasebesi: dokunmatik yüzeydeki kapasitans değişimi bir kesme (interrupt) tetikliyor, HID sürücüsü, pencere sunucusu ve Chrome'un tarayıcı süreci olayı yalıtılmış bir renderer'a aktarıyor, hit test tıklamayı altı katman derindeki Buy düğmesine bağlıyor. Ardından /api/checkout'a giden fetch üç önbelleği de ıskalıyor — bellek, service worker ve disk — çünkü POST istekleri saklanmaz. Soket havuzunda api.thenodebook.com'a açık bir bağlantı yok, dolayısıyla istek «soğuk başlangıç» bedelini ödüyor: TCP ve TLS el sıkışmaları, tur başına 62 ms ile 211,4 milisaniyenin 127'sini alıyor. 203 baytlık düz metin istek, 225 baytlık bir TLS kaydına dönüşüyor ve ağda 300 baytın hemen altında ilerliyor; adresler her durakta okunabilir kalıyor, çünkü kırk kadar makinenin onu yönlendirmesi gerekiyor.
Soğuk ve sıcak başlangıç
Yayımlanan soğuk başlangıç dökümü şöyle: hazırlık 7 ms, el sıkışmalar 127 ms, uçuş ve boyama 74 ms, sunucu 3 ms. Aynı açık bağlantı üzerinden ikinci istek yaklaşık 95 ms sürüyor — tarayıcı 5, tek geçiş 62, sunucu 3, boyama 25 — çünkü açık tutulan soket ve oturum bileti el sıkışmaları tamamen ortadan kaldırıyor. Sayfa, perde aralarında saati durdurup soketleri, portları, anycast yönlendirmeyi, SYN çerezlerini ve kimliği doğrulanmış şifrelemeyi kısaca anlatıyor.
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.