Bu dokümanda, uygulamanızın performansını artırmak için kullanabileceğiniz bazı teknikler açıklanmaktadır. Bazı durumlarda, sunulan fikirleri göstermek için diğer API'lerden veya genel API'lerden örnekler kullanılır. Ancak aynı kavramlar Android Over The Air API için de geçerlidir.
Gzip kullanarak sıkıştırma
Her bir istek için gereken bant genişliğini azaltmanın kolay ve kullanışlı bir yolu da gzip sıkıştırmayı etkinleştirmektir. Sonuçları açmak için ek CPU zamanı gerektirse de ağ maliyetlerinin dengelenmesi genellikle buna çok değer.
gzip olarak kodlanmış bir yanıt almak için iki şey yapmanız gerekir: Bir Accept-Encoding
üstbilgisi ayarlayın ve kullanıcı aracınızı gzip
dizesini içerecek şekilde değiştirin. Burada, gzip sıkıştırmasını etkinleştirmek için düzgün şekilde biçimlendirilmiş bir HTTP üstbilgileri örneği verilmiştir:
Accept-Encoding: gzip User-Agent: my program (gzip)
Kısmi kaynaklarla çalışma
API çağrılarınızın performansını artırmanın bir başka yolu da verilerin yalnızca ilgilendiğiniz bölümünü gönderip almaktır. Böylece uygulamanız, gerekli olmayan alanları aktarmaktan, ayrıştırmaktan ve depolamaktan kaçınabilir, böylece ağ, CPU ve bellek gibi kaynakları daha verimli bir şekilde kullanabilir.
İki tür kısmi istek vardır:
- Kısmi yanıt: Yanıta hangi alanların dahil edileceğini belirttiğiniz bir istek (
fields
istek parametresini kullanın). - Yama: Yalnızca değiştirmek istediğiniz alanları gönderdiğiniz bir güncelleme isteği (
PATCH
HTTP fiilini kullanın).
Kısmi isteklerde bulunmayla ilgili daha ayrıntılı bilgiyi aşağıdaki bölümlerde bulabilirsiniz.
Kısmi yanıt
Varsayılan olarak sunucu, istekleri işledikten sonra kaynağın tam temsilini geri gönderir. Daha iyi performans için sunucudan yalnızca gerçekten ihtiyacınız olan alanları göndermesini isteyip bunun yerine kısmi yanıt almasını isteyebilirsiniz.
Kısmi yanıt istemek için fields
istek parametresini kullanarak döndürülmesini istediğiniz alanları belirtin. Bu parametreyi, yanıt verilerini döndüren tüm isteklerle kullanabilirsiniz.
fields
parametresinin yalnızca yanıt verilerini etkilediğini, varsa göndermeniz gereken verileri etkilemediğini unutmayın. Kaynakları değiştirirken gönderdiğiniz veri miktarını azaltmak için yama isteği kullanın.
Örnek
Yama (kısmi güncelleme)
Ayrıca, kaynakları değiştirirken gereksiz veri göndermekten de kaçınabilirsiniz. Yalnızca değiştirdiğiniz belirli alanlar için güncellenmiş verileri göndermek isterseniz HTTP PATCH
fiilini kullanın. Bu belgede açıklanan yama semantiği, eski GData kısmi güncelleme uygulamasına göre farklı (ve daha basittir).
Aşağıdaki kısa örnek, yama kullanmanın küçük bir güncelleme yapmak için göndermeniz gereken verileri nasıl en aza indirdiğini göstermektedir.
Örnek
Yamaya verilen yanıtı işleme
API, geçerli bir yama isteğini işledikten sonra değiştirilen kaynağın tam temsiliyle birlikte bir 200 OK
HTTP yanıt kodu döndürür. API tarafından ETag'ler kullanılıyorsa sunucu, yama isteğini başarıyla işlediğinde (PUT
'de olduğu gibi) ETag değerlerini günceller.
Yama isteği, döndürdüğü veri miktarını azaltmak için fields
parametresini kullanmadığınız sürece tüm kaynak gösterimini döndürür.
Bir yama isteği söz dizimsel veya semantik olarak geçersiz yeni bir kaynak durumuyla sonuçlanırsa sunucu bir 400 Bad Request
veya 422 Unprocessable Entity
HTTP durum kodu döndürür ve kaynak durumu değişmeden kalır. Örneğin, zorunlu bir alanın değerini silmeye çalışırsanız sunucu bir hata döndürür.
YAMA HTTP fiili desteklenmediğinde alternatif gösterim
Güvenlik duvarınız HTTP PATCH
isteklerine izin vermiyorsa aşağıda gösterildiği gibi bir HTTP POST
isteği yapın ve geçersiz kılma başlığını PATCH
olarak ayarlayın:
POST https://www.googleapis.com/... X-HTTP-Method-Override: PATCH ...
Yama ve güncelleme arasındaki fark
Pratikte, HTTP PUT
fiilini kullanan bir güncelleme isteği için veri gönderirken, yalnızca zorunlu veya isteğe bağlı olan alanları göndermeniz gerekir. Sunucu tarafından ayarlanan alanlar için değer gönderirseniz bu alanlar yoksayılır. Bu yöntem kısmi güncelleme yapmanın başka bir yoluymuş gibi görünse de, bu yaklaşımda bazı sınırlamalar vardır. HTTP PUT
fiilini kullanan güncellemelerde, gerekli parametreleri sağlamazsanız istek başarısız olur ve isteğe bağlı parametreleri sağlamazsanız önceden ayarlanmış verileri temizler.
Bu nedenle, yama kullanmak çok daha güvenlidir. Yalnızca değiştirmek istediğiniz alanlar için veri sağlarsınız; atladığınız alanlar temizlenmez. Bu kuralın tek istisnası, tekrarlanan öğeler veya dizilerle ilgilidir: Bunların tümünü atlarsanız oldukları gibi kalırlar; bunlardan herhangi birini sağlarsanız, tüm grup, sağladığınız kümeyle değiştirilir.