Kaldırma etkinliğini kullanımdan kaldırma

Yayınlanma tarihi: 10 Ağustos 2023, Son güncelleme tarihi: 27 Ağustos 2025

unload etkinliğinin varsayılan değeri kademeli olarak değiştirilerek desteği sonlandırılacak. Böylece, bir sayfa bunları açıkça yeniden etkinleştirmeyi seçmediği sürece unload işleyiciler sayfalarda tetiklenmeyi durduracak.

Kullanımdan kaldırma zaman çizelgesi

Geri/ileri önbelleği uygulama niyetimizi duyurduğumuzda, boşaltma davranışının Ocak 2019 gibi erken bir tarihte değişikliklere tabi olabileceğini belirtmiştik. Uygulama çalışmasıyla paralel olarak geniş kapsamlı bir tanıtım yaptık. Bu tanıtım, unload kullanımında önemli bir düşüşe yol açtı. Bu çalışmayı tamamlamak için Chrome 115'te unload'un desteğini sonlandırmanın etkisini test etme yöntemleri de sunmaya başladık:

2024 boyunca, kullanıma sunma sürecinin başlatılmasını engelleyen çeşitli sorunları ele aldık.

unload etkinliğinin kullanımdan kaldırılmasıyla ilgili mevcut zaman çizelgesini aşağıda bulabilirsiniz:

Milestone Aşama tarihi En Çok Ziyaret Edilen 50 Site Diğer kaynakların yüzdesi
135 26 Mart 2025 1 (www.google.com) 0
139 30 Temmuz 2025 5 0
140 27 Ağustos 2025 10 0
141 24 Eylül 2025 25 0
142 22 Ekim 2025 50 0
En çok ziyaret edilen 50 site için desteği sonlandırma zaman çizelgesi.

İlk 50 siteye dağıtım tamamlandıktan sonra, bu özelliği bir veya iki kilometre taşı boyunca kullanıma sunmayı duraklatıp bekleyeceğiz. Ardından, sonraki 8 kilometre taşı (yaklaşık 32 hafta) boyunca tüm kaynaklara dağıtmak için daha fazla onay alacağız. Bu süreç şu şekilde görünecektir:

Milestone Aşama tarihi En Çok Ziyaret Edilen 50 Site Diğer kaynakların yüzdesi
145 4 Şubat 2026 50 1
146 4 Mart 2026 50 5
147 1 Nisan 2026 50 10
148 29 Nisan 2026 50 20
149 27 Mayıs 2026 50 40
150 24 Haziran 2026 50 60
151 22 Temmuz 2026 50 80
152 19 Ağustos 2026 50 100
Tüm siteler için desteği sonlandırma zaman çizelgesi.

Bu desteğin sonlandırılma zaman çizelgesi, unload'dan geçiş yapmak için yeterli zamanı sağlamazsa devre dışı bırakma seçenekleri menüsü de sunduğumuzu hatırlatırız. Bu kullanımdan kaldırma ile, bu devre dışı bırakma işlemlerinin kaldırılacağı veya azaltılacağı son aşamanın (unload'ın tamamen kullanımdan kaldırılması) zaman çizelgesi hakkında bilgi vermeyi amaçlıyoruz.

Unload desteğinin sonlandırılmasıyla ilgili zaman çizelgesi.
Unload özelliğinin kullanımdan kaldırılmasıyla ilgili zaman çizelgesi.

Arka plan

unload, doküman kaldırılırken tetiklenecek şekilde tasarlanmıştır. Teorik olarak, bir kullanıcı sayfadan ayrıldığında veya oturum sonu geri çağırma olarak kod çalıştırmak için kullanılabilir.

Bu etkinliğin en yaygın olarak kullanıldığı senaryolar şunlardır:

  • Kullanıcı verilerini kaydetme: Sayfadan ayrılmadan önce verileri kaydedin.
  • Temizleme görevlerini gerçekleştirme: Sayfadan ayrılmadan önce açık kaynakları kapatma.
  • Analiz gönderme: Oturumun sonunda kullanıcı etkileşimleriyle ilgili verileri gönderme.

Ancak unload etkinliği son derece güvenilmezdir.

Masaüstü Chrome ve Firefox'ta unload oldukça güvenilirdir ancak bfcache (geri/ileri önbelleği) kullanımını engelleyerek sitenin performansını olumsuz etkiler.

Mobil tarayıcılarda unload genellikle çalışmaz. Bunun nedeni, sekmelerin sık sık arka plana alınması ve ardından sonlandırılmasıdır. Bu nedenle tarayıcılar, mobil cihazlarda bfcache'e unload üzerinde öncelik vermeyi tercih ederek bu durumu daha da güvenilmez hale getiriyor. Safari de masaüstünde bu davranışı kullanır.

Chrome ekibi, masaüstünde unload yerine bfcache'e öncelik veren mobil modeli kullanmanın, Chrome'da (ve Firefox'ta) daha önce makul ölçüde güvenilir olan bu özelliği masaüstünde de güvenilmez hale getirerek kesintiye yol açacağına inanıyor. Bunun yerine Chrome, unload etkinliğini tamamen kaldırmayı amaçlar. Bu süre zarfında, desteğin sonlandırılmasını açıkça devre dışı bırakan kullanıcılar için masaüstünde güvenilirliğini koruyacaktır.

Neden unload etkinliğinin desteği sonlandırılıyor?

unload desteğinin sonlandırılması, şu anda yaşadığımız web'in çok daha büyük bir şekilde tanınması için önemli bir adımdır. unload etkinliği, uygulama yaşam döngüsü üzerinde yanlış bir kontrol hissi verir. Bu his, modern bilgi işlem dünyasında web'e göz atma şeklimiz açısından giderek daha az geçerli hale gelmektedir.

Mobil işletim sistemleri, belleği korumak için web sayfalarını sık sık dondurur veya kaldırır. Masaüstü tarayıcılar da aynı nedenlerle bu işlemi giderek daha fazla yapmaktadır. İşletim sistemi müdahaleleri olmasa bile kullanıcılar, sayfaları resmi olarak "terk etmeden" sekmeler arasında geçiş yapıp eski sekmeleri kapatır.

unload etkinliğinin eskimiş olarak kaldırılması, web geliştiriciler olarak paradigmamızın gerçek dünyayla eşleşmesini sağlamamız ve artık geçerli olmayan (hiç geçerli olup olmadığı da şüpheli) eski kavramlara bağlı kalmamamız gerektiğinin bir kabulüdür.

unload etkinliklerine alternatifler

unload yerine aşağıdakilerin kullanılması önerilir:

  • visibilitychange: Bir sayfanın görünürlüğünün ne zaman değiştiğini belirlemek için kullanılır. Bu etkinlik, kullanıcı sekmeler arasında geçiş yaptığında, tarayıcı penceresini küçülttüğünde veya yeni bir sayfa açtığında gerçekleşir. Uygulama ve kullanıcı verilerini kaydetmek için son güvenilir zaman olarak hidden durumunu göz önünde bulundurun.
  • pagehide: Kullanıcının sayfadan ayrıldığı zamanı belirlemek için kullanılır. Bu etkinlik, kullanıcı sayfadan ayrıldığında, sayfayı yeniden yüklediğinde veya tarayıcı penceresini kapattığında gerçekleşir. Sayfa simge durumuna küçültüldüğünde veya başka bir sekmeye geçildiğinde pagehide etkinliği tetiklenmez. pagehide, bir sayfayı geri/ileri önbellek için uygunsuz hale getirmediğinden bu etkinlik tetiklendikten sonra sayfanın geri yüklenebileceğini unutmayın. Bu etkinlikteki kaynakları temizliyorsanız sayfa geri yükleme işleminde bu kaynakların geri yüklenmesi gerekebilir.

beforeunload etkinliğinin, unload etkinliğinden biraz farklı bir kullanım alanı vardır. Bu etkinlik iptal edilebilir. Genellikle kullanıcıları başka bir sayfaya giderken kaydedilmemiş değişiklikler konusunda uyarmak için kullanılır. Bu etkinlik, arka plan sekmesi kapatılırsa tetiklenmeyeceğinden güvenilir değildir. beforeunload kullanımının sınırlandırılması ve yalnızca koşullu olarak eklenmesi önerilir. Bunun yerine, çoğu unload yerine daha önce bahsedilen etkinlikleri kullanın.

Daha fazla bilgi için unload işleyicisini asla kullanmamayla ilgili bu tavsiyeye göz atın.

unload kullanımını algılama

Sayfalarda unload etkinliğinin görünümlerini bulmanıza yardımcı olacak farklı araçlar vardır. Bu sayede siteler, bu etkinliği kendi kodlarında veya kitaplıkları kullanarak kullanıp kullanmadıklarını ve dolayısıyla yaklaşan desteğin sonlandırılmasından etkilenip etkilenmeyeceklerini öğrenebilir.

Chrome Geliştirici Araçları

Chrome Geliştirici Araçları, unload işleyicisinin kullanımı da dahil olmak üzere sayfanızın geri/ileri önbelleğe alınmaya uygun olmasını engelleyebilecek sorunları belirlemenize yardımcı olmak için back-forward-cache denetimi içerir.

Geri/ileri önbelleğini test etmek için aşağıdaki adımları uygulayın:

  1. Sayfanızda Geliştirici Araçları'nı açın, ardından Uygulama > Arka plan hizmetleri > Geri/ileri önbelleği'ne gidin.

  2. Geri/ileri önbelleğini test et'i tıklayın. Chrome sizi otomatik olarak chrome://terms/ adresine ve ardından sayfanıza geri yönlendirir. Alternatif olarak, tarayıcının geri ve ileri düğmelerini tıklayabilirsiniz.

Sayfanız geri/ileri önbelleğe alma için uygun değilse Geri/ileri önbellek sekmesinde sorunların listesi gösterilir. İşlem yapılabilir bölümünde, unload kullanıp kullanmadığınızı görebilirsiniz:

Chrome Geliştirici Araçları'nın geri/ileri önbellek test aracında, boşaltma işleyicisinin kullanıldığı gösteriliyor
Chrome Geliştirici Araçları'ndaki geri/ileri önbellek test aracı.

Reporting API

Reporting API, web sitenizin kullanıcıları tarafından unload kullanımını tespit etmek için salt okunur bir izin politikasıyla birlikte kullanılabilir.

Daha fazla bilgi için Reporting API'yi kullanarak boşaltmaları bulma başlıklı makaleyi inceleyin.

Bfcache notRestoredReasons API'si

notRestoredReasons özelliği (PerformanceNavigationTiming sınıfına eklendi): Belgelerin gezinme sırasında bfcache kullanmasının engellenip engellenmediği ve nedenleri hakkında bilgi verir. Aşağıda, mevcut bir unload dinleyicisiyle ilgili yanıt nesnesi uyarısının nasıl göründüğüne dair bir örnek verilmiştir:

{
   children: [],
   id: null,
   name: null,
   reasons: [
     {"reason", "unload-listener"}
   ],
   src: null,
   url: "https://www.example.com/page/"
}

unload'a erişimi kontrol etme

Chrome, unload etkinliğine yönelik desteği kademeli olarak sonlandıracak. Bu arada, bu davranışı kontrol etmek ve yakında kullanımdan kaldırılmaya hazırlanmak için farklı araçlar kullanabilirsiniz. Bu tekniklere uzun vadede güvenmemeniz gerektiğini ve en kısa sürede alternatiflere geçmeyi planlamanız gerektiğini unutmayın.

Aşağıdaki seçenekler, yaklaşan desteği sonlandırma işlemine hazırlanabilmeniz için sitenizin unload işleyicileri olmadan nasıl çalışacağını test etmek üzere bu işleyicileri etkinleştirmenize veya devre dışı bırakmanıza olanak tanır. Farklı politika türleri vardır:

  • İzin Politikası: Bu, site sahiplerinin HTTP başlıklarını kullanarak özelliklere erişimi site veya bireysel sayfa düzeyinde kontrol etmesini sağlayan bir platform API'sidir.
  • Kurumsal politikalar: BT yöneticilerinin Chrome'u kuruluşları veya işletmeleri için yapılandırmasına yönelik araçlar. Bu ayarlar, Google Yönetici Konsolu gibi bir yönetici paneli kullanılarak yapılandırılabilir.
  • Chrome flags: Bu, tek bir geliştiricinin çeşitli sitelerdeki etkiyi test etmek için unload desteği sonlandırma ayarını değiştirmesine olanak tanır.

İzin Politikası

Sitelerin unload işleyicilerini kullanmayı devre dışı bırakmasına ve site performansını iyileştirmek için bfcache'ten hemen yararlanmasına olanak tanımak üzere Chrome 115'ten itibaren bir İzin Politikası eklendi. Bu ayarı siteniz için nasıl yapacağınızla ilgili örneklere göz atın. Bu sayede siteler, unload desteğinin sonlandırılmasından önce gerekli önlemleri alabilir.

Bu Chrome 117'de genişletilerek sitelerin tersini yapmasına ve Chrome bu işleyicilerin varsayılan değerini gelecekte tetiklenmeyecek şekilde değiştireceğinden unload işleyicilerini tetiklemeye çalışmaya devam etmesine olanak tanınacak. Unload işleyicilerinin sitenizde tetiklenmesine izin vermeye devam etme hakkında bu örneklere göz atın. Bu etkinleştirme süresiz olmayacak ve sitelerin unload işleyicilerinden taşınması için zaman tanımak amacıyla kullanılacak.

Kurumsal politika

Doğru şekilde çalışmak için unload etkinliğine bağlı yazılımları olan kuruluşlar, kontrolündeki cihazlarda desteğin kademeli olarak sonlandırılmasını önlemek için ForcePermissionPolicyUnloadDefaultEnabled politikasını kullanabilir. Bu politika etkinleştirildiğinde unload, tüm kaynaklar için varsayılan olarak etkin kalmaya devam eder. Bir sayfa isterse daha katı bir politika belirleyebilir. İzin Politikası'nın devre dışı bırakılması gibi bu da olası uyumluluk sorunlarını azaltmaya yönelik bir araçtır ancak süresiz olarak kullanılmamalıdır.

Chrome işaretleri ve komut satırı anahtarları

Chrome flags ve komut satırı anahtarlarını kullanarak, kurumsal politikanın yanı sıra tek tek kullanıcılar için de desteği sonlandırmayı devre dışı bırakabilirsiniz:

chrome://flags/#deprecate-unload ayarını enabled olarak ayarlamak, desteğin sonlandırılmasıyla ilgili varsayılan davranışı öne çıkarır ve unload işleyicilerinin tetiklenmesini engeller. Bu ayarlar, izin politikası kullanılarak site bazında geçersiz kılınmaya devam edebilir ancak varsayılan olarak tetiklenmeye devam eder.

Bu ayarlar komut satırı anahtarları ile de kontrol edilebilir.

Seçenek karşılaştırması

Aşağıdaki tabloda, daha önce bahsedilen seçeneklerin farklı kullanımları özetlenmektedir:

Kullanımdan kaldırma işlemini ileriye taşıma Kullanımdan kaldırma işlemini öne çekme (istisnalar hariç) Taşıma için zaman kazanmak üzere desteğin sonlandırılmasını önleme
İzin Politikası
(sayfalar/siteler için geçerlidir)
Evet Evet Evet
Kurumsal politika
(cihazlar için geçerlidir)
Hayır Hayır Evet
Chrome flag'leri
(bireysel kullanıcılar için geçerlidir)
Evet Hayır Hayır
Chrome komut satırı anahtarları
(bireysel kullanıcılar için geçerlidir)
Evet Hayır Evet

Sonuç

unload işleyicilerin desteği sonlandırılıyor. Uzun süredir güvenilir olmayan bu tetikleyicilerin, dokümanların yok edildiği tüm durumlarda tetikleneceği garanti edilmez. Ayrıca, unload işleyicileri bfcache ile uyumlu değildir.

unload işleyicilerini kullanan siteler, mevcut unload işleyicilerini test ederek, kaldırarak veya taşıyarak bu yaklaşan desteği sonlandırma işlemine hazırlanmalıdır. Son çare olarak, daha fazla zamana ihtiyaç duyulursa desteği sonlandırma işlemi ertelenebilir.

Teşekkür

Bu makalenin incelenmesine yardımcı olan Kenji Baheux, Fergal Daly, Adriana Jara ve Jeremy Wagner'a teşekkür ederiz.

Unsplash'te Anja Bauermann tarafından çekilen hero resmi