Yayınlanma tarihi: 10 Ağustos 2023, Son güncelleme tarihi: 29 Haziran 2026
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.
Desteği sonlandırma zaman çizelgesi
Geri/ileri önbelleği uygulama niyetimizi duyurduğumuzda, 2019'un başlarında boşaltma davranışının değişikliklere tabi olabileceğini belirtmiştik. Uygulama çalışmalarına paralel olarak, unload kullanımında önemli bir düşüşe yol açan büyük bir erişim çalışması gerçekleştirdik. Bu çalışmayı tamamlamak için Chrome 115'te unload özelliğinin desteğinin sonlandırılmasının etkisini test etmenin yollarını da sunmaya başladık:
- Chrome 115'te (Temmuz 2023) unload için Permission-Policy API kullanılarak yapılan gerçek ortam testi
- Chrome 117'de (Eylül 2023) bir işareti etkinleştirerek yerel test yapma
2024 boyunca, kullanıma sunma sürecinin başlamasını engelleyen çeşitli sorunları ele aldık ve 2025 boyunca, desteği sonlandırma sürecini ilk 50 siteye uyguladık:
| 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 |
2026'da bu özelliği tüm kaynaklara sunmaya başladık. Aşağıdaki tabloda ayrıntılı olarak belirtildiği gibi, bu süreç 8 aşamada (yaklaşık 32 hafta) tamamlandı.
| Milestone | Aşama tarihi | En Çok Ziyaret Edilen 50 Site | Tüm siteler için Chrome sayfa yüklemelerinin yüzdesi |
|---|---|---|---|
| 146 | 10 Mart 2026 | 50 | 1 |
| 147 | 7 Nisan 2026 | 50 | 5 |
| 148 | 5 Mayıs 2026 | 50 | 10 |
| 149 | 2 Haziran 2026 | 50 | 20 |
| 150 | 30 Haziran 2026 | 50 | 40 |
| 151 | 28 Temmuz 2026 | 50 | 60 |
| 152 | 25 Ağustos 2026 | 50 | 80 |
| 153 | 22 Eylül 2026 | 50 | 100 |
Tam kullanıma sunma işlemi, Kullanımdan Kaldırma Niyetinde ayrıntılı olarak açıklandığı gibi, kullanıcıları veya siteleri diğerlerinden daha fazla etkilememek için tek tek kullanıcılar veya siteler yerine sayfa yüklemelerine (zaman içinde tutarlılıkla) dayanır.
Bu desteğin sonlandırılma zaman çizelgesinin, unload'dan geçiş yapmak için yeterli zamanı sağlamaması durumunda devre dışı bırakma seçenekleri menüsü de sunduğumuzu hatırlatırız.
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 çok tercih edildiği 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 unload yerine geri-ileri önbelleğe ö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 geri-ileri önbelleğe öncelik veren mobil modelin kullanılmasının, daha önce Chrome'da (ve Firefox'ta) makul ölçüde güvenilir olan bu özelliği masaüstünde de güvenilmez hale getirerek rahatsız edici olacağını düşünü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 Chrome'un masaüstü sürümünde güvenilirliğini koruyacaktır.
unload etkinliği neden kullanımdan kaldı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, modern bilgi işlem dünyasında web'e göz atma şeklimizle giderek daha az alakalı olan uygulama yaşam döngüsü üzerinde yanlış bir kontrol hissi veriyor.
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 sık sık geçiş yapar ve 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çerliliğini yitirmiş (eğer hiç geçerli olduysa) 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 olarakhiddendurumunu göz önünde bulundurun.pagehide: Kullanıcının sayfadan ayrıldığı zamanı belirlemek için. 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ğindepagehideetkinliğ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ı, sayfadan ayrılırken 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ı olacak bir back-forward-cache denetimi içerir.
Geri/ileri önbelleği test etmek için aşağıdaki adımları uygulayın:
Sayfanızda Geliştirici Araçları'nı açın, ardından Application (Uygulama) > Background services (Arka plan hizmetleri) > Back/forward cache'e (Geri/ileri önbelleği) gidin.
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:
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şaltma işlemlerini 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 neden engellendiği 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ğinin desteğini kademeli olarak sonlandırıyor. Bu süre zarfında, bu davranışı kontrol etmek ve yaklaşan desteği sonlandırma işlemine 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 etmenize olanak tanımak ü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 tek tek 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 flag'leri: Bu, tek bir geliştiricinin çeşitli sitelerdeki etkiyi test etmek için
unloaddesteğ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 geri-ileri önbellekten hemen yararlanmasına olanak tanımak üzere Chrome 115'ten itibaren bir izin 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 değişiklikleri yapabilir.
Bu Chrome 117'de genişletilerek sitelerin tersini yapmasına ve Chrome bu işleyicilerin varsayılan olarak gelecekte tetiklenmemesini değiştireceğinden, şu anda yaptıkları gibi unload işleyicilerini tetiklemeye devam etmeyi etkinleştirmesine olanak tanındı. Unload işleyicilerinin siteniz için tetiklenmesine izin vermeye devam etme ile ilgili bu örneklere göz atın. Site sahiplerini, güvenilirlikleri nedeniyle unload işleyicilerini kullanmaktan vazgeçmeye teşvik etsek de bu işleyicileri kullanması gereken siteler için bu devre dışı bırakma seçeneğini uzun süre desteklemeyi planlıyoruz. Tekrar etkinleştirmenin, mobil cihazlarda unload herkese açık kullanıcı adlarının güvenilirliğini artırmadığını, yalnızca mevcut durumu geri yüklediğini unutmayın.
Kurumsal politika
Doğru şekilde çalışmak için unload etkinliğine bağlı yazılımları olan kuruluşlar, kendi kontrolleri altındaki 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ı devre dışı bırakma gibi bu da olası uyumluluk sorunlarını azaltmaya yönelik bir araçtır. Yine, site sahiplerini unload işleyicilerine bağımlı olmamaya teşvik ediyoruz ancak Chrome, kullanması gereken siteler için bu kurumsal devre dışı bırakma özelliğini uzun bir süre desteklemeyi planlıyor.
Chrome flag'leri ve komut satırı anahtarları
Chrome işaretlerini ve komut satırı anahtarlarını kullanarak, kurumsal politikanın yanı sıra tek tek kullanıcılar için de desteği sonlandırma işlemini 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 tarihini öne çekme | 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
Faydalı inceleme geri bildirimleri için Kenji Baheux, Fergal Daly, Adriana Jara ve Jeremy Wagner'a teşekkür ederiz.
Unsplash'te Anja Bauermann tarafından çekilen hero resim