




Next.Js 13 Dinamik Sayfa Önbellek Sorunu
-
Selamlar,
Next.js 13 sürümü ile saçma bi hata da takıldım kaldım. Günlerdir ilerleyemiyorum. Sorunuma bir türlü somut yanıt bulamadım.
---
/app klasörü içerisinde /[urun] ve /panel klasörlerim var. Bu [urun] içerisindeki sayfalarda veritabanından gelen ürün bilgilerini alıp yazdırıyorum. Veritabanında bir değişiklik yapığımda sayfalar arası geçişte olması gerektiği gibi anında yansıyor.
/panel klasörü ise kullanıcı paneli routeu. Kullanıcılar giriş yaptığında buraya gidiyor öncelikle. Fakat bu dosya yolunda bir sorunum var. Örnek olarak kullanıcı bilgilerini güncelledi. Bu sayfaya tekrar geldiğinde cache almış veriler yer alıyor. Sadece F5 yaparsa veriler güncelleniyor. Yani sayfa hiçbir şekilde <Link yönlendirmesi ile geldiğinde güncellemiyor.
Mesela;
./app/panel/page.jsx;
export default function Home() { const time = new Date().toLocaleString(); return ( <> Panel Time: {time} <br /> <br /> <Link href="/">Homepage</Link> </> ); }
sayfa içeriğini yapsam bile timestamp güncellenmiyor. Sadece F5 yapmam gerekiyor.
export const dynamic = "force-dynamic";
satırını ekle çözülür diye yazıyor heryerde. Ekledim ama çözüldüğü falan yok.
Bu sorunla daha önce karşılaştınız mı? Veya bildiğiniz çözüm var mıdır?
Canlı test etmek isteyenler için: https://codesandbox.io/p/sandbox/cevztd
-
https://stackoverflow.com/a/75688590
Dene bakalim tolga hocam
-
end bunu yazdı
https://stackoverflow.com/a/75688590
Dene bakalim tolga hocam
Teşekkürler hocam.
Veriler birkaç saniye sonra güncelliyor. Tam istediğimi vermese de ihtiyacımı görecek.
Peki sence neden direkt sayfa önbelleğe alınıyor hocam? Ürün sayfaları tam istediğim gibi çalışırken [params] içermeyen sayfalar bu şekilde statik dosya gibi önbellekten geliyor.
-
biri bunu yazdıend bunu yazdı
https://stackoverflow.com/a/75688590
Dene bakalim tolga hocam
Teşekkürler hocam.
Veriler birkaç saniye sonra güncelliyor. Tam istediğimi vermese de ihtiyacımı görecek.
Peki sence neden direkt sayfa önbelleğe alınıyor hocam? Ürün sayfaları tam istediğim gibi çalışırken [params] içermeyen sayfalar bu şekilde statik dosya gibi önbellekten geliyor.
https://stackoverflow.com/a/75065403
burada @Eric neden kaynaklanabilecegini aciklamis hocam.
-
panel sayfanın kodunu paylaşabilir misin?
-
Cosmic bunu yazdı
panel sayfanın kodunu paylaşabilir misin?
Birebir örneği linkte;
-
Hocam olayı çok anlamamakla birlikte;
- Verileri context / store gibi bir yapıda saklaman
- Hook (useeffect, usememo gibi) ile değişim takibi yapmak lazım diye düşünüyorum.
Şu anki örnekte çok verimli şekilde kullanamamışsın gibi görünüyor.
Sonuçta home componentinde time'ı tanımlıyorsun ama home re-render olmadıkça o değişken değişmez. Re-render olması için de tetikleyen bir şey olması gerekiyor.
-
biri bunu yazdıCosmic bunu yazdı
panel sayfanın kodunu paylaşabilir misin?
Birebir örneği linkte;
orada sınıfın içine koyduğun kod sınıf load olduğunda tek sefer çalışır. Sayfa componenti tek sefer init olur. O tip değişiklikleri useEffect içinde state e setleyip yapman gerekir.
-
Cosmic bunu yazdıbiri bunu yazdıCosmic bunu yazdı
panel sayfanın kodunu paylaşabilir misin?
Birebir örneği linkte;
orada sınıfın içine koyduğun kod sınıf load olduğunda tek sefer çalışır. Sayfa componenti tek sefer init olur. O tip değişiklikleri useEffect içinde state e setleyip yapman gerekir.
useEffect clientta çalışıyor. Serverdan veri almam lazım benim. Normal şartlarda SSR için o sayfa her cagirildiginda gelmesi geliyor verinin.
-
getServerSideProps un içinde setleyeceksin o zaman
-
Cosmic bunu yazdı
getServerSideProps un içinde setleyeceksin o zaman
Next.js 13'te getServerSideProps yok. :)
https://beta.nextjs.org/docs/data-fetching/fundamentals