Ana içeriğe geç

Sayfalama

İngilizcesi
Pagination
Türkçe karşılığı
sayfalandırma
Okunuşu
pecineyşın

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/pagination

Kısaca

Sayfalama, büyük bir sonuç kümesini daha küçük sayfalara bölme uygulamasıdır; böylece bir API veya web sitesi her istekte yönetilebilir sayıda öğe döndürür.

Sayfalama (pagination) nedir?

Sayfalama; ürünler, arama sonuçları ya da mesajlar gibi uzun bir sonuç listesini sayfa adı verilen daha küçük parçalara böler. Bir milyon satırı bir anda döndürmek yavaş olur ve çok fazla bellek kullanır; bunun yerine bir API örneğin 20 öğe döndürür ve sonraki 20'yi isteme yolunu da sunar. Aynı fikir; numaralı sayfa bağlantılarına, 'Daha fazla yükle' düğmelerine ve kullanıcı arayüzlerindeki sonsuz kaydırmaya (infinite scrolling) güç verir.

En yaygın iki teknik offset ve cursor sayfalamadır. Offset sayfalama ?limit=20&offset=40 veya ?page=3 gibi parametreler kullanır ve doğrudan SQL'in LIMIT ve OFFSET ifadeleriyle eşleşir; bu da onu kurmayı kolaylaştırır ve kullanıcıların herhangi bir sayfaya atlamasına olanak tanır. Cursor sayfalama, görülen son öğeyi işaret eden ?cursor=abc123 gibi bir token döndürür ve sonraki istek hemen o öğenin ardından devam eder.

Offset sayfalamanın büyük veya hızlı değişen verilerde iki dezavantajı vardır: veritabanı offset'ten önceki her satırı yine de okuyup atlamak zorundadır, bu yüzden derin sayfalar yavaşlar; ayrıca istekler arasında satır eklendiğinde veya silindiğinde öğeler atlanabilir ya da tekrarlanabilir. İmleç bir ID ya da zaman damgası gibi bir sütun değeri olduğunda keyset sayfalama olarak da adlandırılan cursor sayfalama, doğru yere doğrudan atlamak için bir indeks kullanarak bu iki sorunu da önler. Bedeli, doğrudan 50. sayfaya atlayamamanızdır.

İyi bir benzetme uzun bir kitap okumaktır: offset sayfalama '50. sayfaya git' demek, cursor sayfalama ise araya ayraç koyup oradan devam etmek gibidir. API'ler sonraki sayfanın nasıl alınacağını genellikle yanıtta, bir nextCursor alanı, bir hasMore bayrağı veya bir Link başlığıyla belirtir ve istemcilerin her şeyi bir anda istememesi için sayfa boyutuna üst sınır koyar.

Önemli noktalar

  • Sayfalama, büyük sonuç kümelerini daha küçük sayfalar halinde döndürür.
  • Offset sayfalama (limit ve offset) basittir ve herhangi bir sayfaya atlamaya izin verir.
  • Cursor sayfalama, görülen son öğeden sonra devam eder ve büyük tablolarda hızlı kalır.
  • Offset sayfalama, istekler arasında veri değiştiğinde öğeleri atlayabilir ya da tekrarlayabilir.
  • API'ler sayfa boyutuna üst sınır koymalı ve istemcilere sonraki sayfanın nasıl alınacağını söylemelidir.

Örnek

SQL'de offset ve cursor sayfalamasql
-- Offset pagination: page 3 with 20 items per page (skips 40 rows)
SELECT id, title FROM posts
ORDER BY id
LIMIT 20 OFFSET 40;

-- Cursor (keyset) pagination: the next 20 items after the last id seen (1040)
SELECT id, title FROM posts
WHERE id > 1040
ORDER BY id
LIMIT 20;

Sık sorulan sorular

Offset ile cursor sayfalama arasındaki fark nedir?

Offset sayfalama öğeleri konumlarına göre ister (örneğin 40'ı atla, 20'yi al); cursor sayfalama ise belirli bir öğeden sonra gelen öğeleri ister. Offset daha basittir ve sayfa numaralarını destekler; cursor büyük veri kümelerinde daha hızlıdır ve veri değiştiğinde öğeleri atlamaz veya tekrarlamaz.

Bir API sayfa başına kaç öğe döndürmelidir?

Yaygın varsayılanlar 20 ile 100 öğe arasındadır ve istemcinin aşamayacağı bir üst sınır vardır. Doğru boyut, yanıt süresi ve yük boyutunu, istemcilerin kaç istek yapması gerektiğiyle dengeler.

Sonsuz kaydırma bir sayfalama türü müdür?

Evet. Sonsuz kaydırma, kullanıcı listenin sonuna yaklaştıkça sonraki sayfayı otomatik yükleyen bir kullanıcı arayüzüdür ve arka planda genellikle cursor sayfalamaya dayanır.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar