Php ile çekilen api verileri hızlandırma
Merhabalar,
Php ile çektiğim 2 3 tane servis var. Arama yapılırken 3 4 saniye hatta 6 saniye de buluyor. Bu altyapıları hızlandırabilmek için ayrı kodlar var mı ?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
API istekleri için özellikle yazılmış bir makale var mı bilmiyorum.
Genel olarak sayfalarınızı nasıl cache'leyebileceğinizle ilgili aşağıdaki yazıyı buldum:
https://insta.gen.tr/php-cache-yapimi-tarayici-onbellekleme-kullanimi/
Burada API isteklerinizi değil sayfalarınızı cache'liyorsunuz. Daha detaylı bir açıklama yazmak için benim vaktim yok ne yazık ki.
Merhaba. Verilerin daha hızlı gelmesini sağlamanız sizin tarafınızda pek mümkün değil. Yani sunucunuzun internet hızını artırabilirsiniz belki ama geç cevap verme çoğunlukla api'nin sunucularından kaynaklıdır.
Şöyle bir öneri sunabilirim:
Kendinize bir cache mekanizması kurabilirsiniz. API'a attığınız aynı isteklere aynı yanıtlar dönüyorsa tekrar tekrar istek atmanız gerekmez. Gelen isteğin yanıtını bir dosyaya kaydedersiniz ve mesela 1 saat boyunca aynı isteği atmak yerine bu dosyanızdaki veriyi okursunuz. Böylece kendi sunucunuzda bulunan dosyadan veri okumak, API'dan veri okumaktan çok çok daha hızlı sonuç verir.
Kendinize bir fonksiyon oluşturmalısınız. Bu fonksiyon,
- API'a atılmak istenen isteği alacak.
- Yeni bir istek atıp atmayacağını belirleyen bir değişken başlangıçta false değeri alacak.
- Daha önce atılan istekleri kaydettiği dosyadan bu isteğin daha önce atılıp atılmadığını bulacak.
- İstek daha önce atılmışsa
- Atılan isteğin zamanının dolup olmadığını kontrol edecek.
- Eğer isteğin zamanı henüz dolmamışsa:
- İsteğin sonucunu hangi dosyaya yazdığını alacak.
- Sonuç olarak fonksiyon bu dosyanın içeriğini return edecek ve fonksiyon sonlanacak.
- Eğer isteğin zamanı dolmuşsa:
- İsteğin sonucunu yazdığı dosyayı silecek.
- Kendisinde de bu isteği barındıran veriyi silecek.
- Yeni istek atılması gerektiğini belirten değişken true yapılacak.
- Daha önce istek atılmamışsa
- Yeni istek atılması gerektiğini belirleyen değişken true yapılacak.
- Yeni istek atılması gerektiğini belirleyen değişken true ise
- API'a istek atacak.
- İsteğin yanıtını bir dosyaya kaydedecek.
- İsteğin kendisini, yanıtını yazdığı dosyayı ve isteğin geçerlilik süresini (örn 1 saat) istekleri tuttuğu dosyaya kaydedecek.
- API sonucunu return edecek ve fonksiyon sonlanacak.
Bu algoritmayı sadece anlık değişmeyen API endpoint'leri için kullanabilirsiniz. Eğer API'dan gelen veri aynı isteği yapmanıza rağmen her seferinde farklı bir yanıt verebilecekse bu yöntemi kullanamazsınız çünkü kullanıcıya eski veri göstermiş olursunuz.