1. Arka Plan:
- Kalıcı bağlantı sorunları: Kalıcı olmayan bağlantılar için, tarayıcı bağlantının kesilip kesilmediğine göre talep eden veya yanıt veren varlığın sınırlarını tanımlayabilir; Sürekli bağlantılar için bu yaklaşım elbette işe yaramıyor. Bazen, tüm verileri göndermiş olsam da, tarayıcı açık bağlantıda yeni veri gelip gelmeyeceğini bilmiyor, bu yüzden sadece bekliyor.
- İçerik Uzunluğu ile çöz: Varlık uzunluğunu hesaplayın ve karşı tarafa kafadan söyleyin. Tarayıcı, yanıt varlığının bittiğini İçerik-Uzunluğunun uzunluğu bilgisinden anlayabilir
- İçerik uzunluğu ile ilgili yeni sorun: İçerik Uzunluğu alanı gerçekten varlık uzunluğunu yansıtmak zorunda, dinamik olarak üretilen içerik için uzunluk içerik oluşturulana kadar bilinmez. Şu anda, uzunluğu doğru anlamak için sadece yeterince büyük bir tampon açıp tüm içeriğin üretilmesini bekleyerek hesaplayabilirsiniz. Ancak bu, bir yandan daha fazla bellek yükü gerektirirken, diğer yandan istemci daha uzun bekletebilir.
- Başlığın uzunluğuna dayanmayan ve varlıkların sınırlarını bilen yeni bir mekanizmaya ihtiyacımız var - Transfer-Encoding: chunked.
2. Transfer-Kodlama (parçalı)
- Transfer-Encoding, kelime anlamıyla "aktarım kodlaması" anlamına gelen bir HTTP başlık alanıdır (yanıt başlığı alanı). En son HTTP spesifikasyonu yalnızca bir kodlama taşıma türünü tanımlar: chunked.
- Parçalı aktarım kodlaması, Hipermetin Transfer Protokolü (HTTP) içinde bir web sunucusu tarafından istemciye gönderilen HTTP verilerinin birden fazla parçaya bölünmesine olanak tanıyan bir veri aktarım mekanizmasıdır. Blok taşıma kodlaması yalnızca HTTP protokolü 1.1 sürümünde (HTTP/1.1) mevcuttur.
- Veriler, bir dizi parçaya ayrılır ve sunucunun gönderilen içeriğin toplam boyutunu önceden bilmeden veri gönderebilmesi için bir veya daha fazla parça halinde gönderilir.
Özel yöntemler
- Transfer-Encoding: chunked başlığa eklendikten sonra, paket parçalanmış demektir. Bu durumda, paketteki varlıkların bir dizi parça halinde iletilmesi gerekir.
- Her parça, onaltılık uzunluk değerini ve veriyi içerir ve uzunluk değeri yalnızca bir satıra özeldir; uzunluk, CRLF'nin sonundaki ve parçalanmış verinin sonundaki CRLF'yi içermez.
- Son parça uzunluğu değeri 0 olmalı ve ilgili parça verisi içeriği içeriksizdir, bu da varlığın sonunu gösterir.
asp.net Çekirdek test kodu:
|