Kullanici Yanitlarini Sunucuya Gondermeden Javascript Ile Yerel Depola
Kullanici Yanitlarini Sunucuya Gondermeden Javascript Ile Yerel Depola

Kullanıcı Yanıtlarını Sunucuya Göndermeden JavaScript ile Yerel Depolama Çözümleri


Web sitelerinde kullanıcı etkileşimini artırmak ve zengin bir kullanıcı deneyimi sunmak, günümüz dijital dünyasında rekabet avantajı sağlamanın temel yollarından biridir. Ancak bu etkileşimler sırasında toplanan verilerin nasıl yönetildiği, özellikle Google AdSense gibi reklam platformları kullanan yayıncılar için hayati önem taşır. Bu makalede, kullanıcı yanıtlarını sunucuya göndermeden, yalnızca JavaScript yerel depolama mekanizmalarıyla nasıl yönetebileceğimizi, bu yaklaşımın avantajlarını ve AdSense politikalarıyla uyumluluğunu "Basit Anket Oluşturucu" örneği üzerinden detaylı bir şekilde inceleyeceğiz. Amaç, hem kullanıcı gizliliğini korumak hem de web uygulamanızın performansını artırırken, AdSense kurallarına uygun hareket etmektir.

Neden Yerel Depolama? AdSense ve Kullanıcı Gizliliği Perspektifi


Geleneksel web uygulamaları, kullanıcıdan alınan verileri genellikle sunucu tarafına göndererek bir veritabanında saklar. Bu yaklaşım, verilerin merkezi yönetimi ve kalıcılığı açısından avantajlı olsa da, her veri alışverişinde sunucuya yapılan çağrıların getirdiği ek yük ve potansiyel güvenlik riskleri barındırır. Özellikle küçük ölçekli veya tek sayfalık uygulamalar (SPA) için, her kullanıcı etkileşimini sunucuya taşımanın getirdiği gecikmeler, performans optimizasyonu açısından arzu edilmeyebilir. İşte bu noktada client-side depolama çözümleri devreye girer.
JavaScript ile yerel depolama, kullanıcı verilerini doğrudan tarayıcının kendisinde, istemci tarafında saklama imkanı sunar. Bu, özellikle bir "Basit Anket Oluşturucu" gibi uygulamalar için büyük faydalar sağlar. Örneğin, kullanıcı bir ankete başlar ancak internet bağlantısı kesilir veya sayfayı yanlışlıkla kapatırsa, yerel depolama sayesinde yanıtları kaybolmaz ve kaldığı yerden devam edebilir. Bu durum, kesintisiz bir kullanıcı deneyimi sunar.
AdSense politikaları açısından bakıldığında, yerel depolama özellikle hassas veri işleme ve veri gizliliği konularında önemlidir. Google, kullanıcıların kişisel olarak tanımlanabilir bilgilerinin (PII) toplanması, saklanması ve paylaşılması konusunda çok katı kurallara sahiptir. Eğer bir anketten gelen yanıtları sunucunuza kaydetmiyorsanız, bu, PII işleme sorumluluğunuzu önemli ölçüde azaltır. Bu, potansiyel politika ihlallerinden kaçınmak için etkili bir strateji olabilir, zira veri sunucuya ulaşmadığı sürece, sizin tarafınızdan herhangi bir işleme, depolama veya paylaşma söz konusu olmaz. Elbette, bu durum AdSense'in kendisinin reklam gösterimi için tarayıcıda depoladığı çerezler veya diğer verilerden bağımsızdır; yayıncı olarak her zaman AdSense'in kendi gerektirdiği onayları (GDPR, CCPA vb.) almanız gerekir. Ancak anket verilerinizin sunucunuza ulaşmaması, sizin kendi veri toplama ayak izini azaltır.

Temel Yerel Depolama Mekanizmaları ve Basit Anket Uygulaması


Modern tarayıcılar, geliştiricilere çeşitli istemci tarafı depolama seçenekleri sunar. Bunlar arasında en yaygın ve basit anket oluşturucu gibi uygulamalar için en uygun olanlar `localStorage` ve `sessionStorage`'dır.

localStorage: Kalıcı Veri Saklama


`localStorage`, anahtar-değer çiftleri halinde veri depolamanıza olanak tanıyan, tarayıcı tabanlı bir depolama mekanizmasıdır. En önemli özelliği, verilerin tarayıcı kapatıldıktan veya bilgisayar yeniden başlatıldıktan sonra bile kalıcı olmasıdır. Aynı alan adına sahip sayfalar arasında erişilebilir olması, kullanıcılar sitenizi tekrar ziyaret ettiklerinde anket yanıtlarına veya tercihlerine ulaşabilmeniz anlamına gelir. Örneğin, bir kullanıcının yarıda bıraktığı bir anketin ilerlemesini veya tamamlanmış bir anketin sonuçlarını yerel olarak saklamak için idealdir. Veriler metin tabanlı (string) saklandığı için, JavaScript objelerini veya dizilerini depolamadan önce `JSON.stringify()` ile string'e dönüştürmek, geri çağırırken de `JSON.parse()` ile tekrar objeye dönüştürmek gerekir.
Basit bir anket uygulamasında, kullanıcı bir soruyu yanıtladığında veya bir sonraki sayfaya geçtiğinde, mevcut yanıtları bir JavaScript objesi olarak toplayıp `localStorage.setItem('anketCevaplari', JSON.stringify(cevapObjesi))` şeklinde kaydedebiliriz. Kullanıcı sayfayı tekrar açtığında ise `localStorage.getItem('anketCevaplari')` ile verileri geri alıp anketi kaldığı yerden devam ettirebiliriz.

sessionStorage: Oturum Bazlı Depolama


`sessionStorage`, `localStorage` ile benzer bir API'ye sahiptir ancak verileri yalnızca mevcut tarayıcı oturumu süresince saklar. Kullanıcı tarayıcı sekmesini veya penceresini kapattığında, `sessionStorage`'daki tüm veriler silinir. Bu, geçici verileri veya bir oturum boyunca devam etmesi gereken ancak kalıcı olmasına gerek olmayan bilgileri depolamak için mükemmel bir seçenektir.
Bir basit anket oluşturucu senaryosunda, `sessionStorage`'ı bir kullanıcının anketin belirli bir aşamasında yaptığı geçici seçimleri veya o anki oturuma özel ilerlemesini saklamak için kullanabiliriz. Örneğin, çok adımlı bir anketin her adımı arasında kullanıcının geçici yanıtlarını saklayabilir, böylece kullanıcı bir önceki adıma geri dönerse seçimleri hala yerinde olur. Ancak oturum sona erdiğinde, bu geçici verilerin de otomatik olarak silinmesi, veri gizliliği açısından ek bir katman sunabilir.

IndexedDB ve Web SQL (Alternatifler)


`IndexedDB` ve `Web SQL`, tarayıcı tarafında daha karmaşık ve yapılandırılmış veri depolama ihtiyaçları için tasarlanmış güçlü mekanizmalardır. `IndexedDB`, tarayıcı tabanlı NoSQL veritabanı benzeri bir sistem sunarken, `Web SQL` ilişkisel veritabanı benzeri bir yaklaşım benimser (ancak artık standart değildir). Basit anket oluşturucu gibi uygulamalar için genellikle aşırıya kaçan çözümler olsalar da, eğer anket sonuçları üzerinde çok daha karmaşık sorgulamalar yapmanız veya büyük miktarda yapılandırılmış veri saklamanız gerekiyorsa, bu seçenekler göz önünde bulundurulabilir. Ancak çoğu durumda `localStorage` ve `sessionStorage` basit ve etkili çözümler sunar.

Basit Anket Oluşturucu Uygulamasında Yerel Depolama Kullanımı


Yerel depolamayı basit anket oluşturucu uygulamanıza entegre etmek oldukça kolaydır. İşte ana hatlarıyla bir uygulama senaryosu:
1. Anket Verilerini Yapılandırma: Anket sorularını ve seçeneklerini bir JavaScript objesi veya dizisi olarak tanımlayın. Kullanıcının yanıtlarını da benzer bir yapı içinde tutun.
2. Yanıtları Kaydetme: Kullanıcı bir soruyu yanıtladığında veya "İleri" butonuna tıkladığında, mevcut anket yanıtlarını içeren objeyi alın, `JSON.stringify()` ile string'e dönüştürün ve `localStorage.setItem('anketVerileri', stringCevaplar)` komutuyla kaydedin. Örneğin, kullanıcı bir checkbox seçtiğinde veya bir metin kutusuna girdiğinde bu işlemi tetikleyebilirsiniz.
3. Yanıtları Yükleme: Sayfa yüklendiğinde, `localStorage.getItem('anketVerileri')` komutunu kullanarak daha önce kaydedilmiş yanıtları kontrol edin. Eğer veri varsa, `JSON.parse()` ile objeye dönüştürün ve anketi kullanıcının kaldığı yerden devam ettirmek için bu verileri kullanın. Bu, kullanıcının sayfa yenileme veya tarayıcıyı kapatma sonrası kaldığı yerden devam etmesini sağlar ve kullanıcı deneyimini artırır.
4. Anket Tamamlandığında Temizleme: Kullanıcı anketi başarıyla tamamladığında, `localStorage.removeItem('anketVerileri')` komutunu kullanarak depolanan yanıtları silebilirsiniz. Bu, gereksiz verilerin birikmesini önler ve veri gizliliğini pekiştirir. Eğer anketin sonuçları gösterilecekse, bu sonuçlar da sadece kullanıcının kendi tarayıcısında, anlık olarak gösterilir ve sunucuya gönderilmez.
Bu yaklaşım, anket sonuçlarının hiçbir zaman sizin sunucunuza ulaşmamasını garanti eder. Tüm işleme ve depolama kullanıcının cihazında gerçekleştiğinden, sizin veri sorumluluğunuz önemli ölçüde azalır.

AdSense Politikaları ve Yerel Depolama İlişkisi


AdSense politikaları ve yerel depolama çözümleri arasındaki ilişki, "veri akışı" bağlamında değerlendirilmelidir. Eğer uygulamanız JavaScript yerel depolama kullanarak kullanıcıdan aldığı anket yanıtlarını yalnızca kullanıcının kendi cihazında saklıyor ve bu verileri asla kendi sunucunuza göndermiyorsa, AdSense'in kişisel olarak tanımlanabilir bilgilerle ilgili katı politikalarına doğrudan aykırı hareket etmemiş olursunuz. Zira, sizin tarafınızdan herhangi bir PII toplanmıyor, işlenmiyor veya paylaşılmıyor demektir.
Ancak bu durum, AdSense'in kendi reklam faaliyetleri için kullanıcı verilerini toplamayacağı anlamına gelmez. AdSense, reklam kişiselleştirmesi ve performans ölçümü amacıyla kendi çerezlerini veya diğer depolama mekanizmalarını kullanabilir. Bir yayıncı olarak sizin sorumluluğunuz, AdSense politikalarına uygun bir gizlilik politikası yayınlamak ve özellikle GDPR (Genel Veri Koruma Tüzüğü) ve CCPA (Kaliforniya Tüketici Gizliliği Yasası) gibi düzenlemeler kapsamında gerekli kullanıcı onaylarını almaktır. Bu onaylar genellikle reklamların kişiselleştirilmesi için çerez kullanımına ilişkindir. Sizin anket uygulamanızın client-side depolama stratejisi, bu onay süreçlerini etkilemez ancak sizin veri toplama ayak izinizi minimize ederek genel uyumluluk çabalarınıza katkıda bulunur.
Özetle, yerel depolama kullanarak sunucuya veri göndermemek, AdSense politikaları ile uyumlu, veri gizliliği odaklı ve performanslı bir yaklaşım sunar. Ancak yine de, web sitenizdeki genel veri işleme uygulamalarınızı ve AdSense ile ilgili tüm yükümlülüklerinizi dikkatle gözden geçirmeniz gerekmektedir. Örneğin, eğer anket yanıtları dolaylı yoldan kullanıcıyı tanımlayabilecek nitelikteyse (örneğin, çok spesifik bir demografik bilgi veya hassas bir görüş), bu verileri bile sadece yerel olarak saklıyor olsanız bile bir gizlilik bildirimi eklemek iyi bir uygulama olacaktır. Daha fazla bilgi için Google'ın yayıncı politikaları sayfasını ziyaret edebilirsiniz: /makale.php?sayfa=adsense-yayinici-politikalari].

Güvenlik ve Gizlilik İpuçları


Yerel depolamanın kullanımı kolay ve avantajlı olsa da, dikkat edilmesi gereken bazı güvenlik ve gizlilik noktaları bulunmaktadır:
* Hassas Bilgilerden Kaçının: Asla kişisel olarak tanımlanabilir hassas bilgileri (şifreler, kredi kartı numaraları, sağlık bilgileri vb.) `localStorage` veya `sessionStorage`'da saklamayın. Bu veriler, tarayıcının güvenlik açıklarından veya XSS (Cross-Site Scripting) saldırılarından etkilenebilir.
* Veri Bütünlüğü: Yerel depolamadaki veriler, kullanıcı tarafından kolayca manipüle edilebilir. Bu nedenle, kritik iş mantığına dayanan veya doğrulanması gereken hiçbir bilgiyi yerel depolamaya güvenerek işletmeyin.
* Açık Gizlilik Politikası: Web sitenizde yerel depolama kullanıyorsanız, kullanıcılarınıza bu durumu ve hangi tür verileri nasıl sakladığınızı açıklayan şeffaf bir gizlilik politikası sunun. Bu, özellikle anket yanıtları gibi kullanıcı tarafından girilen veriler için önemlidir.
* Veri Temizleme: Gereksiz hale gelen verileri düzenli olarak temizleyin. Anket tamamlandığında veya belirli bir süre geçtikten sonra ilgili yerel depolama anahtarlarını silmek iyi bir uygulamadır.
* Veri Şifreleme (Gerektiğinde): Eğer yerel depolamada sakladığınız verilerin belirli bir düzeyde korunması gerekiyorsa (ancak PII içermiyorsa), bu verileri depolamadan önce şifreleyebilir veya hash'leyebilir, geri yüklerken çözebilirsiniz. Ancak bu, performansı etkileyebilir ve karmaşıklığı artırır.
Bu prensiplere uyarak, hem kullanıcılarınızın veri gizliliğini koruyabilir hem de web uygulamanız için güvenli ve verimli bir client-side depolama stratejisi oluşturabilirsiniz.
Sonuç olarak, kullanıcı yanıtlarını sunucuya göndermeden JavaScript yerel depolama çözümleriyle yönetmek, özellikle bir basit anket oluşturucu gibi uygulamalar için etkili bir yöntemdir. Bu yaklaşım, sayfa yüklerini azaltarak performans optimizasyonu sağlar, çevrimdışı çalışabilirlik sunar ve en önemlisi, AdSense politikaları bağlamında sizin veri toplama ayak izinizi minimuma indirerek veri gizliliğine katkıda bulunur. Doğru bir uygulama ve şeffaf bir gizlilik politikası ile bu yöntem, hem yayıncılar hem de kullanıcılar için karşılıklı fayda sağlayabilir. Web sitenizde kullanıcı etkileşimini artırırken gizliliğe odaklanmak için bu çözümleri değerlendirmenizi şiddetle tavsiye ederiz. Daha fazla SEO ipucu için [SEO için JavaScript optimizasyonları
makalemizi inceleyebilirsiniz.

Serkan Çelik

Yazar: Serkan Çelik

Ben Serkan Çelik, bir Dijital Pazarlama Uzmanı. Platformumuzda teknolojiyi herkes için anlaşılır kılmak, karmaşık konuları basitleştirerek okuyucularımızın günlük yaşamında pratik olarak kullanabileceği bilgiler sunmak, yeni beceriler kazandırmak, farkındalık oluşturmak ve teknoloji dünyasındaki gelişmeleri anlaşılır bir dille aktarmak amacıyla yazıyorum.

Diğer Makaleler

Adim Adim Basit Javascript Anket Projesi Birden Fazla Soruyu Tek Bir AAdim Adim Basit Javascript Anket Projesi Birden Fazla Soruyu Tek Bir AJavascript Ile Olusturdugum Basit Anketi Mobil Cihazlarda Nasil ResponJavascript Ile Olusturdugum Basit Anketi Mobil Cihazlarda Nasil ResponSunucuya Gerek Duymadan Basit Javascript Anket Sonuclarini Aninda EkraSunucuya Gerek Duymadan Basit Javascript Anket Sonuclarini Aninda EkraBasit Javascript Anketini Tamamladiktan Sonra Kullaniciya Ozel TesekkuBasit Javascript Anketini Tamamladiktan Sonra Kullaniciya Ozel TesekkuMevcut Html Sayfasina Basit Javascript Anketini Kopyala Yapistir Ile NMevcut Html Sayfasina Basit Javascript Anketini Kopyala Yapistir Ile NJavascript Kullanarak Coktan Secmeli Ve Tek Secimli Basit Anket SorulaJavascript Kullanarak Coktan Secmeli Ve Tek Secimli Basit Anket SorulaKullanici Bos Birakirsa Basit Javascript Anketini Gondermesini EngelleKullanici Bos Birakirsa Basit Javascript Anketini Gondermesini EngelleBasit Bir Javascript Anketinden Kullanici Cevaplarini Sayfa YenilemedeBasit Bir Javascript Anketinden Kullanici Cevaplarini Sayfa YenilemedeWeb Sitenize Hizlica Entegre Edebileceginiz Basit Javascript Anket KodWeb Sitenize Hizlica Entegre Edebileceginiz Basit Javascript Anket KodSifirdan Baslayanlar Icin Vanilla Javascript Ile Basit Anket Formu NasSifirdan Baslayanlar Icin Vanilla Javascript Ile Basit Anket Formu NasKullanici Dostu Ve Hizli Yuklenen Bir Js Anketi Icin Performans OptimiKullanici Dostu Ve Hizli Yuklenen Bir Js Anketi Icin Performans OptimiAnket Sonuclarini Sayfayi Yenilemeden Aninda Gostermek Icin JavascriptAnket Sonuclarini Sayfayi Yenilemeden Aninda Gostermek Icin JavascriptTek Sayfalik Bir Web Uygulamasina Javascript Ile Basit Bir Anket BilesTek Sayfalik Bir Web Uygulamasina Javascript Ile Basit Bir Anket BilesMobil Uyumlu Ve Hafif Javascript Anketi Icin Minimal Kod GereksinimlerMobil Uyumlu Ve Hafif Javascript Anketi Icin Minimal Kod GereksinimlerSifirdan Baslayarak Javascript Ile Css Stilli Basit Anket Formu YapimiSifirdan Baslayarak Javascript Ile Css Stilli Basit Anket Formu YapimiZiyaretcilerden Aninda Veri Toplamak Icin Dinamik Anket Elemanlarini JZiyaretcilerden Aninda Veri Toplamak Icin Dinamik Anket Elemanlarini JUcuncu Parti Araca Gerek Duymadan Javascript Ile Sadece Evethayir TipiUcuncu Parti Araca Gerek Duymadan Javascript Ile Sadece Evethayir TipiHtml Ve Saf Javascript Ile Coktan Secmeli Basit Anket Kodu Yazimi IcinHtml Ve Saf Javascript Ile Coktan Secmeli Basit Anket Kodu Yazimi IcinBackend Olmadan Sadece Javascript Kullanarak Hizli Bir Geri Bildirim FBackend Olmadan Sadece Javascript Kullanarak Hizli Bir Geri Bildirim FKendi Web Sitenize Javascript Ile Basit Anket Eklemenin En Hizli Yolu Kendi Web Sitenize Javascript Ile Basit Anket Eklemenin En Hizli Yolu Basit Javascript Anketinizin Gorsel Tasarimini Css Ile KisisellestirmeBasit Javascript Anketinizin Gorsel Tasarimini Css Ile KisisellestirmeJavascript Anket Gonderimi Sonrasi Basari Mesaji Veya Yonlendirme NasiJavascript Anket Gonderimi Sonrasi Basari Mesaji Veya Yonlendirme NasiMevcut Web Sitenize Kolayca Entegre Edilebilen Minimalist Javascript AMevcut Web Sitenize Kolayca Entegre Edilebilen Minimalist Javascript AMobil Uyumlu Ve Duyarli Bir Javascript Anket Bileseni Nasil KodlanirMobil Uyumlu Ve Duyarli Bir Javascript Anket Bileseni Nasil KodlanirKullanicilarin Tum Alanlari Doldurmasini Saglayan Javascript Anket DogKullanicilarin Tum Alanlari Doldurmasini Saglayan Javascript Anket DogHarici Kutuphane Bagimliligi Olmadan Saf Javascript Ile Hafif Anket TaHarici Kutuphane Bagimliligi Olmadan Saf Javascript Ile Hafif Anket TaBasit Bir Javascript Anketi Icin Katilimcilara Aninda Sonuc Grafigi GoBasit Bir Javascript Anketi Icin Katilimcilara Aninda Sonuc Grafigi GoSunucuya Gerek Duymadan Tarayicida Javascript Ile Anket Sonuclarini GeSunucuya Gerek Duymadan Tarayicida Javascript Ile Anket Sonuclarini GeCoktan Secmeli Ve Acik Uclu Sorular Icin Dinamik Javascript Anket FormCoktan Secmeli Ve Acik Uclu Sorular Icin Dinamik Javascript Anket FormHtml Ve Saf Javascript Kullanarak Adim Adim Etkilesimli Anket OlusturmHtml Ve Saf Javascript Kullanarak Adim Adim Etkilesimli Anket OlusturmTek Sayfali Tek Adimli Javascript Anket Uygulamasi Gelistirme IpuclariTek Sayfali Tek Adimli Javascript Anket Uygulamasi Gelistirme IpuclariHicbir Backend Bilgisi Olmadan Javascript Ile Ilk Anketimi Nasil YaparHicbir Backend Bilgisi Olmadan Javascript Ile Ilk Anketimi Nasil YaparBasit Javascript Ile Kosullu Dinamik Anket Sorulari Nasil OlusturulurBasit Javascript Ile Kosullu Dinamik Anket Sorulari Nasil OlusturulurJavascript Anket Verilerini Tarayicida Local Storage Kalici Hale GetirJavascript Anket Verilerini Tarayicida Local Storage Kalici Hale GetirKullanici Dostu Ve Sik Gorunumlu Javascript Anket Tasarim Ipuclari NelKullanici Dostu Ve Sik Gorunumlu Javascript Anket Tasarim Ipuclari NelJavascript Anket Cevaplarini Direkt Google E Tablolara Gonderme Yolu VJavascript Anket Cevaplarini Direkt Google E Tablolara Gonderme Yolu VKendi Coktan Secmeli Javascript Anketimi Sifirdan Nasil KodlarimKendi Coktan Secmeli Javascript Anketimi Sifirdan Nasil KodlarimHtml Sayfama Hizli Ve Ucretsiz Javascript Anket Formu Eklemek IstiyoruHtml Sayfama Hizli Ve Ucretsiz Javascript Anket Formu Eklemek IstiyoruJavascript Anket Sonuclarini Sunucusuz Nasil Toplar Ve SaklarimJavascript Anket Sonuclarini Sunucusuz Nasil Toplar Ve SaklarimVeritabani Gerektirmeyen Javascript Anket Olusturucu Kodu AriyorumVeritabani Gerektirmeyen Javascript Anket Olusturucu Kodu Ariyorum