Performansı Artırma

Bu belgede, uygulamanızın performansını artırmak için kullanabileceğiniz bazı teknikler ele alınmaktadır. Bazı durumlarda, sunulan fikirleri açıklamak 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 ile sıkıştırma

Her istek için gereken bant genişliğini azaltmanın kolay ve rahat bir yolu gzip sıkıştırma yöntemini etkinleştirmektir. Bu işlem, sıkıştırılmış sonuçları açmak için ek CPU süresi gerektirse de ağ maliyetleriyle ilgili avantajları sayesinde genellikle çok faydalıdır.

Gzip ile kodlanmış bir yanıt almak için iki işlem yapmanız gerekir: Accept-Encoding üstbilgisini ayarlamak ve kullanıcı aracınızı gzip dizesini içerecek şekilde değiştirmek. Gzip sıkıştırma yöntemini etkinleştirmek için uygun şekilde oluşturulmuş HTTP üstbilgilerine dair bir örneği aşağıda bulabilirsiniz:

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 diğer yolu da yalnızca ilgilendiğiniz veri kısmını göndermek ve almak. Bu sayede uygulamanız gereksiz alanları aktarmak, ayrıştırmak ve depolamak zorunda kalmaz; ağ, CPU, bellek gibi kaynakları daha verimli kullanabilir.

İki tür kısmi istek vardır:

  • Kısmi yanıt: Yanıta hangi alanların dahil edileceğini belirttiğiniz istek (fields istek parametresini kullanın).
  • Yama: Yalnızca değiştirmek istediğiniz alanları gönderdiğiniz bir güncelleme isteğidir (PATCH HTTP fiilini kullanın).

Kısmi istekte bulunma hakkında daha fazla bilgiyi aşağıdaki bölümlerde bulabilirsiniz.

Kısmi yanıt

Varsayılan olarak, sunucu istekleri işledikten sonra bir kaynağın tam gösterimini geri gönderir. Daha iyi performans için sunucudan yalnızca gerçekten ihtiyacınız olan alanları göndermesini isteyebilir ve sadece kısmi yanıt alabilirsiniz.

Kısmi yanıt istemek için, döndürülmesini istediğiniz alanları belirtmek üzere fields istek parametresini kullanın Bu parametreyi, yanıt verileri döndüren tüm isteklerle kullanabilirsiniz.

fields parametresinin yalnızca yanıt verilerini etkilediğini, göndermeniz gereken verileri (varsa) etkilemediğini unutmayın. Kaynakları değiştirirken gönderdiğiniz veri miktarını azaltmak için yama isteği kullanın.

Yama (kısmi güncelleme)

Ayrıca kaynakları değiştirirken gereksiz veriler göndermekten de kaçınabilirsiniz. Yalnızca değiştirdiğiniz belirli alanlar için güncellenen verileri göndermek üzere HTTP PATCH fiilini kullanın. Bu belgede açıklanan yama semantiği, kısmi güncellemenin eski GData uygulamasında kullanılan semantikten farklıdır (ve daha basittir).

Aşağıdaki kısa örnekte, yama kullanmanın küçük bir güncelleme yapmak için göndermeniz gereken verileri nasıl en aza indirdiği gösterilmektedir.

Örnek

Yama yanıtını işleme

API, geçerli bir yama isteğini işledikten sonra değiştirilen kaynağın tam temsiliyle birlikte 200 OK HTTP yanıt kodunu döndürür. API tarafından ETag'ler kullanılıyorsa sunucu, bir yama isteğini başarıyla işlediğinde ETag değerlerini PUT ile yaptığı gibi günceller.

Yama isteği, döndürdüğü veri miktarını azaltmak için fields parametresini kullanmadığınız sürece kaynak temsilinin tamamını döndürür.

Bir yama isteği, söz dizimi veya anlam açısından geçersiz olan yeni bir kaynak durumuyla sonuçlanırsa sunucu 400 Bad Request veya 422 Unprocessable Entity HTTP durum kodunu 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 hata döndürür.

PATCH HTTP fiili desteklenmediğinde alternatif gösterim

Güvenlik duvarınız HTTP PATCH isteklerine izin vermiyorsa HTTP POST isteği gönderin ve geçersiz kılma üstbilgisini aşağıdaki örnekte gösterildiği gibi PATCH olarak ayarlayın:

POST https://www.googleapis.com/...
X-HTTP-Method-Override: PATCH
...

Yama ve güncelleme arasındaki fark

Uygulamada, HTTP PUT fiilini kullanan bir güncelleme isteği için veri gönderdiğinizde 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 değerler yoksayılır. Bu, kısmi güncelleme yapmanın başka bir yolu gibi görünse de bu yaklaşımın 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 daha önce ayarlanan veriler temizlenir.

Bu nedenle yama kullanmak çok daha güvenlidir. Yalnızca değiştirmek istediğiniz alanlarla ilgili verileri sağlarsınız. Atladığınız alanlar temizlenmez. Bu kuralın tek istisnası, tekrarlayan öğeler veya diziler için geçerlidir: Bunların tümünü atlarsanız olduğu gibi kalırlar. Bunlardan herhangi birini sağlarsanız tüm küme, sağladığınız küme ile değiştirilir.