React'te API Yanıtlarını Önbelleğe Alma - Apidog

Performansı artırmak ve kullanıcı deneyimini iyileştirmek için API yanıt önbellekleme güçlü bir tekniktir. Bu makalede öğreneceğiz.

Efe Demir

Efe Demir

25 September 2025

React'te API Yanıtlarını Önbelleğe Alma - Apidog

Kurumsal İçin Apidog

Şirket İçi (On-Premises) Dağıtım

SSO ve RBAC

SOC 2 Uyumlu

Apidog Enterprise'ı Keşfedin

Bu makalede, API önbelleğe alma kavramını inceleyeceğiz, React'te özel bir önbelleğe alma bileşeni oluşturmayı tartışacak ve süreci basitleştiren çeşitli araçları ve paketleri inceleyeceğiz. İster temel bir önbelleğe alma çözümü uygulamak, ister React Query ve SWR gibi gelişmiş araçlardan yararlanmak istiyor olun, bu kılavuz, React uygulamalarınızı verimli API yanıt önbelleğe alma ile optimize etmek için gereken içgörüleri ve pratik adımları sağlayacaktır.

Neden React'te API Yanıtını Önbelleğe Almalısınız?

API yanıt önbelleğe alma, modern web geliştirmede uygulamaların performansını ve verimliliğini önemli ölçüde artırabilen kritik bir tekniktir. Uygulamalar daha karmaşık hale geldikçe, veri almak için giderek daha fazla harici API'lere güveniyor ve bu da verimli veri yönetimini kritik bir endişe haline getiriyor. Performansı optimize etmek ve kullanıcı deneyimini geliştirmek için güçlü bir teknik, API yanıt önbelleğe almadır. API çağrılarından gelen yanıtları depolayarak, uygulamalar sunucu yükünü önemli ölçüde azaltabilir, veri alma sürelerini en aza indirebilir ve kullanıcılara sorunsuz bir deneyim sunabilir.

Bir kullanıcının daha önce eriştiği bir sayfayı yeniden ziyaret ettiğini düşünün; sunucuya yeni bir istek göndermek ve verilerin tekrar getirilmesini beklemek yerine, uygulama depolanan yanıtı neredeyse anında sunabilir. Bu sadece değerli zaman kazandırmakla kalmaz, aynı zamanda daha sorunsuz ve daha duyarlı bir arayüz sağlar.

Özel Bir Önbelleğe Alma Bileşeni Oluşturma

React'te özel bir önbelleğe alma bileşeni oluşturmak, verilerin nasıl önbelleğe alındığı ve yönetildiği üzerinde kesin kontrol sağlar. Bu bölüm, böyle bir bileşenin oluşturulmasına yönelik adım adım bir kılavuz ve dezavantajları hakkında bir tartışma sunmaktadır.

Bileşen Kurulumu

İlk olarak, verileri getirmek ve önbelleğe almakla sorumlu olacak temel bir React bileşeni ayarlayın.


import React, { useState, useEffect } from 'react';

const useCustomCache = (apiUrl) => {
  const [data, setData] = useState(null);
  const [cache, setCache] = useState({});

  useEffect(() => {
    if (cache[apiUrl]) {
      setData(cache[apiUrl]);
    } else {
      fetch(apiUrl)
        .then(response => response.json())
        .then(result => {
          setCache(prevCache => ({ ...prevCache, [apiUrl]: result }));
          setData(result);
        });
    }
  }, [apiUrl, cache]);

  return data;
};

export function App(props) {
  const apiUrl = 'https://jsonplaceholder.typicode.com/users';
  const data = useCustomCache(apiUrl);

  if (!data) return <div>Loading...</div>;

  return (
    <div className='App'>
      <pre>{JSON.stringify(data, null, 2)}</pre>
    </div>
  );
};

Durum Yönetimi

useState kancası, hem önbelleğe alınmış verileri hem de getirilen mevcut verileri yönetmek için kullanılır. Bu, bileşenin önbelleğe alınmış verileri mi yoksa yeni bir API çağrısı mı sunacağını belirlemesini sağlar.

Veri Getirme ve Önbelleğe Alma

useEffect kancası, bir ağ isteği yapmadan önce önbelleği kontrol etme mantığını içerir. Veriler önbellekte bulunursa, doğrudan kullanılır; aksi takdirde, bir getirme isteği yapılır ve sonuç önbellekte saklanır.

Veri Süresi Dolumu

Önbellek geçersiz kılmayı işlemek için, önbelleğe alınmış veriler için bir yaşam süresi (TTL) ayarlayabilirsiniz. Bu, verilerin periyodik olarak yenilenmesini ve güncel kalmasını sağlar.

import React, { useState, useEffect } from 'react';

const useCustomCache = (apiUrl, ttl = 60000) => {
  const [data, setData] = useState(null);
  const [cache, setCache] = useState({});

  useEffect(() => {
    const cachedData = cache[apiUrl];
    if (cachedData && (Date.now() - cachedData.timestamp < ttl)) {
      setData(cachedData.data);
    } else {
      fetch(apiUrl)
        .then(response => response.json())
        .then(result => {
          setCache(prevCache => ({ ...prevCache, [apiUrl]: { data: result, timestamp: Date.now() } }));
          setData(result);
        });
    }
  }, [apiUrl, cache, ttl]);

  return data;
};

export function App(props) {
  const apiUrl = 'https://jsonplaceholder.typicode.com/users';
  const data = useCustomCache(apiUrl);

  if (!data) return <div>Loading...</div>;

  return (
    <div className='App'>
      <pre>{JSON.stringify(data, null, 2)}</pre>
    </div>
  );
};

Özel Önbelleğe Almanın Dezavantajları

Özel bir önbelleğe alma bileşeni oluşturmak esneklik sunarken, aynı zamanda çeşitli dezavantajları da beraberinde getirir:

Bu zorlukları anlayarak, geliştiriciler özel önbelleğe almayı ne zaman uygulayacakları ve daha gelişmiş araçlardan ne zaman yararlanacakları konusunda bilinçli kararlar verebilirler

Önbelleğe Alma İçin NPM Paketlerini Kullanma

NPM paketlerinden yararlanmak, React uygulamalarında önbelleğe almanın uygulanmasını büyük ölçüde basitleştirebilir. İşte başlamanıza yardımcı olabilecek birkaç popüler paket:

axios-cache-adapter

axios-cache-adapter, önbelleğe alma yeteneklerini popüler bir HTTP istemcisi olan axios'a entegre eder.

Kurulum:

npm install axios axios-cache-adapter

Kullanım:

// Bağımlılıkları içe aktar
import axios from 'axios'
import { setupCache } from 'axios-cache-adapter'

// `axios-cache-adapter` örneği oluştur
const cache = setupCache({
  maxAge: 15 * 60 * 1000
})

// Yeni oluşturulan `cache.adapter` öğesini geçirerek `axios` örneği oluştur
const api = axios.create({
  adapter: cache.adapter
})

// Bazı REST api'lerine GET isteği gönder
api({
  url: 'http://some-rest.api/url',
  method: 'get'
}).then(async (response) => {
  // response.data ile harika bir şeyler yap \o/
  console.log('Request response:', response)

  // `localForage` API'si için mağaza ile etkileşim kurma.
  const length = await cache.store.length()

  console.log('Cache store length:', length)
})

lru-cache

lru-cache, en son kullanılan (LRU) bir önbellek uygular.

Kurulum:

npm install lru-cache

Kullanım:

import LRU from 'lru-cache';

const cache = new LRU({ max: 100 }); // Önbellekteki maksimum öğe sayısı

const fetchData = async (url) => {
  if (cache.has(url)) {
    return cache.get(url);
  }
  const response = await fetch(url);
  const data = await response.json();
  cache.set(url, data);
  return data;
};

idb-keyval

idb-keyval, istemci tarafı depolama için düşük seviyeli bir API olan IndexedDB'de anahtar-değer çiftlerini depolamayı basitleştirir.

Kurulum:

npm install idb-keyval

Kullanım:

import { get, set } from 'idb-keyval';

const fetchData = async (url) => {
  const cachedData = await get(url);
  if (cachedData) {
    return cachedData;
  }
  const response = await fetch(url);
  const data = await response.json();
  await set(url, data);
  return data;
};

Bu paketler, React uygulamalarınızda önbelleğe almayı uygulamak için basit bir yol sunarak, önbelleğe alınmış verileri manuel olarak yönetmek için gereken karmaşıklığı ve çabayı azaltır. Bu araçları kullanarak, verimli veri alma ve gelişmiş performans sağlarken, uygulamanızın özelliklerini geliştirmeye daha fazla odaklanabilirsiniz.

API Önbelleğe Alma İçin Gelişmiş Araçlara Giriş

React'te API yanıtlarını önbelleğe almaya gelince, React Query ve SWR gibi gelişmiş araçlar, özel olarak oluşturulmuş önbelleğe alma mekanizmalarının yeteneklerini aşan sağlam, özellik açısından zengin çözümler sunar. Bu araçlar, durum yönetimini basitleştirmek, veri getirmeyi geliştirmek ve veri tutarlılığını sağlamak için tasarlanmıştır; bunların tümü sorunsuz bir geliştirici deneyimi sağlarken.

TanStack Query

TanStack Query (FKA React Query), React uygulamaları için sunucu tarafı verileri yönetmenin karmaşıklıklarını ortadan kaldıran güçlü bir veri getirme kütüphanesidir. React Query, React uygulamalarınızda sunucu durumunu nasıl ele aldığınızı dönüştürür. Yerleşik önbelleğe alma, arka plan güncellemeleri ve hata işleme için kullanıma hazır destek sunarak, önbelleğe alma ve durum senkronizasyonunu manuel olarak yönetmeye gerek kalmadan veri getirme mantığını yönetmeyi kolaylaştırır.

Özel Çözümlere Göre Avantajları:

Basitleştirilmiş Durum Yönetimi:
React Query, önbelleğe alma ve durum yönetiminin inceliklerini ele alarak geliştiricilerin uygulama mantığına odaklanmasını sağlar. Önbelleğe alma, geçersiz kılma ve verileri yeniden getirme karmaşıklıklarını soyutlayarak temiz ve sezgisel bir API sağlar.

Otomatik Arka Plan Yenileme:
React Query, verileri güncel tutmak için verileri arka planda otomatik olarak yeniden getirebilir. Bu, uygulamanızın manuel yenileme tetikleyicilerine gerek kalmadan her zaman en güncel verileri görüntülemesini sağlar.

İyimser Güncellemeler:
İyimser güncellemelerle, React Query, sunucu güncellemeyi onaylamadan önce UI'deki değişiklikleri hemen yansıtabilir. Bu, kullanıcıların eylemlerinin anında yansıtıldığını görebilmesiyle sorunsuz ve duyarlı bir kullanıcı deneyimi sağlar.

Örnek:

npm install react-query // paketi yükleyin

import { QueryClient, QueryClientProvider, useQuery } from 'react-query'

const queryClient = new QueryClient()

export default function App() {
  return (
    <QueryClientProvider client={queryClient}>
      <Example />
    </QueryClientProvider>
  )
}

function Example() {
  const { isPending, error, data } = useQuery({
    queryKey: ['repoData'],
    queryFn: () =>
      fetch('https://jsonplaceholder.typicode.com/users').then((res) =>
        res.json(),
      ),
  })
  console.log(data)

  if (isPending) return 'Loading...'

  if (error) return 'An error has occurred: ' + error.message

  return (
    <div>
      <pre>{JSON.stringify(data, null, 2)}</pre>
    </div>
  )
}

Yukarıdaki kod, resmi belgeler sayfasından alınmıştır ve veri getirmenin temel yolunu açıklamaktadır. Yukarıdaki kodlardan görebileceğiniz gibi, TanStack Query, verileri getirmemizi kolaylaştırır ve ayrıca bu verileri kolayca önbelleğe alır.

SWR (Stale-While-Revalidate)

Vercel tarafından geliştirilen SWR, basitlik ve verimliliği vurgulayan, React için bir başka popüler veri getirme kütüphanesidir. "SWR" adı, eski verileri taze verileri arka planda getirirken sunan bir önbelleğe alma stratejisi olan "stale-while-revalidate" anlamına gelir.

SWR, veri getirme ve önbelleğe alma için son derece sezgisel bir API sağlar. Uygulamanızın verileri hemen (eski veriler) görüntülemesini ve ardından arka planda taze verileri getirerek yeniden doğrulanmasını sağlar. Bu strateji, performans ve veri tazeliği arasında bir denge sağlar.

Özel Çözümlere Göre Avantajları:

Kullanım Kolaylığı:
SWR'nin API'si basit ve kullanımı kolaydır, bu da onu her beceri seviyesindeki geliştiriciler için erişilebilir hale getirir. Veri getirme, önbelleğe alma, senkronizasyon ve hata işlemeyi minimum yapılandırmayla ele alır.

Veri Tutarlılığı:
SWR, uygulama verilerinizin her zaman taze olmasını sağlar. Verileri arka planda otomatik olarak yeniden doğrular ve kullanıcılara manuel yenilemeler gerektirmeden en güncel bilgileri sağlar.

Hata İşleme:
SWR'deki yerleşik hata işleme, veri getirme sırasında hataları yönetmeyi kolaylaştırır. Veri getirme başarısız olduğunda hata mesajları veya yedek UI bileşenleri görüntülemek için kancalar sağlar.

Örnek:

npm install swr // paketi yükleyin

import useSWR from 'swr';

const fetcher = (url) => fetch(url).then((res) => res.json());

export default Example = () => {
  const apiUrl = 'https://jsonplaceholder.typicode.com/users';
  const { data, error } = useSWR(apiUrl, fetcher);

  if (!data) return <div>Loading...</div>;
  if (error) return <div>Error: {error.message}</div>;

  return (
    <div>
      <pre>{JSON.stringify(data, null, 2)}</pre>
    </div>
  );
};

Hem React Query hem de SWR, React uygulamalarında sunucu tarafı verileri yönetmek için kapsamlı çözümler sunar. Verileri getirme, önbelleğe alma ve senkronize etme sürecini basitleştirir, özel önbelleğe alma mantığına olan ihtiyacı azaltan güçlü özellikler sunar. Geliştiriciler, bu araçlardan yararlanarak uygulamalarının verimli, performanslı olmasını ve sorunsuz bir kullanıcı deneyimi sunmasını sağlayabilirler.

Apidog ile Çalışmak

Apidog'un ana sayfası

Apidog, sağlam dokümantasyon, otomatik test ve gerçek zamanlı izleme sunarak API güvenliğini artırır. Apidog ayrıca, API'lerinizin kullanıcı verilerini etkili bir şekilde korumasını sağlayarak GDPR ve HIPAA gibi endüstri standartlarına uyulmasına yardımcı olur.

Ek olarak, Apidog ekip işbirliğini destekleyerek güvenliğe odaklı bir geliştirme ortamı oluşturur. Apidog'u entegre ederek, verilerinizi ve kullanıcılarınızı çeşitli güvenlik tehditlerinden koruyarak güvenli, güvenilir ve uyumlu API'ler oluşturabilirsiniz.

button

Sonuç

Modern web uygulamalarının performansını ve kullanıcı deneyimini geliştirmek için API yanıt sürelerini optimize etmek çok önemlidir. API yanıtlarını önbelleğe almak, sunucu yükünü önemli ölçüde azaltabilir ve veri alma hızlarını artırabilir. React'te özel önbelleğe alma bileşenleri oluşturmak esneklik sunarken, React Query ve SWR gibi gelişmiş araçlardan yararlanmak süreci kolaylaştırabilir ve otomatik arka plan güncellemeleri ve hata işleme gibi ek özellikler sağlayabilir.

Ayrıca, axios-cache-adapter, lru-cache ve idb-keyval gibi NPM paketlerini kullanmak, önbelleğe alma uygulamalarını basitleştirebilir ve önbelleğe alınmış verileri yönetmenin karmaşıklığını azaltabilir. Kapsamlı API yönetimi için, Apidog gibi araçlar, geliştirme yaşam döngüsü boyunca güvenilirliği ve verimliliği sağlayarak API tasarımı, test etme ve izleme için sağlam çözümler sunar.

Geliştiriciler, bu araçları ve stratejileri birleştirerek, sorunsuz bir kullanıcı deneyimi sunan duyarlı ve performanslı uygulamalar oluşturabilirler.

Explore more

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Yerel DeepSeek R1'i Cursor IDE ile kurun ve yapılandırın. Özel, uygun maliyetli AI kodlama yardımı için.

4 June 2025

Android'de Gemma 3n Nasıl Çalıştırılır?

Android'de Gemma 3n Nasıl Çalıştırılır?

Google AI Edge Gallery'den Gemma 3n'i Android'e kurup çalıştırmayı öğrenin.

3 June 2025

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

Claude Code'u GitHub Actions ile entegre edin: Kod incelemeleri, hata düzeltmeleri ve özellik uygulamaları. Kurulum, iş akışları ve geliştiriciler için ipuçları.

29 May 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin