Varsayılan ayar kademeli olarak değiştirilerek unload
etkinliği kademeli olarak kullanımdan kaldırılacak. Böylece, bir sayfa açıkça yeniden etkinleştirmediği sürece unload
işleyicilerin sayfalarda etkinleşmesini durduracak.
Kullanımdan kaldırma zaman çizelgesi
Geri-ileri önbellek uygulama niyetimizi duyurduğumuz Ocak 2019'dan itibaren kaldırma davranışının değişebileceğini belirtmiştik. Uygulama çalışmalarına paralel olarak geniş bir erişim elde ettik ve bu sayede kaldırma kullanımında önemli bir düşüş elde ettik. Bu konuda desteğe ek olarak, Chrome 115'ten kaldırma işleminin nasıl sonlandırılacağını test etmeye yönelik yöntemler de sunmaya başladık:
- Chrome 115'te (Temmuz 2023) Permission-Policy API for unload üzerinden yapılan kontrollü testler
- Chrome 117'de bir flag etkinleştirerek yerel test yapın (Eylül 2023)
Bu erişim ve deneme aşamalarının ardından, geçici olarak desteğin sonlandırılmasının nasıl gerçekleşeceğini aşağıda görebilirsiniz:
- İlk 50 popüler site için kaldırma işleminin kademeli olarak sona ereceği kapsamlı bir aşama (yazım tarihi itibarıyla referans).
- Başlangıç olarak, kullanıcıların% 1'i Chrome 120 sürümünü kullanmaya başlar (Kasım 2023'ün sonu).
- 2024'ün 3. çeyreğinin sonuna kadar kullanıcıların% 100'üne ulaşacaktır
- Buna ek olarak, 2024'ün 3. çeyreğinden itibaren, kaldırma işleminin tüm sitelerde kademeli olarak sona ereceği genel bir aşamaya başlamayı planlıyoruz. Bu aşama, 2025'in 1. çeyreğinin sonuna kadar kullanıcıların% 1'i başlayıp kullanıcıların% 100'üyle sona erecek.
Geçici desteğin sonlandırılmasının zaman çizelgesinin, yüklemeyi kaldırma işlemi için yeterli zamanı sağlamaması ihtimaline karşı bir devre dışı bırakma seçenekleri menüsü de sunduğumuzu unutmayın. Amacımız, bu geçici olarak kullanımdan kaldırma olanaklarını kullanarak, söz konusu kapsam dışında kalma işlemlerinin kaldırılacağı veya azaltılacağı son aşama (kaldırmanın kesin olarak kullanımdan kaldırılması) ile ilgili zaman çizelgesi konusunda bilgi vermektir.
Arka plan
unload
, doküman kaldırılırken tetiklenecek şekilde tasarlandı. Teoride, kullanıcı bir sayfadan ayrıldığında her zaman kod çalıştırmak veya oturum sonunda geri çağırma yapmak için kullanılabilir.
Bu etkinliğin en sık 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 veriler gönderme.
Ancak unload
etkinliği son derece güvenilir değildir.
Masaüstü Chrome ve Firefox'ta unload
makul ölçüde güvenilirdir ancak bfcache (geri-ileri önbellek) kullanımını engelleyerek sitenin performansını olumsuz yönde etkiler.
Sekmeler sıklıkla arka plana alınıp kapatıldığı için unload
mobil tarayıcılarda genellikle çalışmaz. Bu nedenle tarayıcılar, mobil cihazlarda unload
yerine bfcache'ye öncelik vermeyi seçerek daha da güvenilmez hale gelir. Safari bu davranışı masaüstünde de kullanır.
Chrome ekibi, masaüstünde unload
bfcache'a öncelik veren mobil modelin daha önce Chrome'da (ve Firefox'ta) makul ölçüde güvenilir olmasına rağmen bu mobil modelde de güvenilmez olacağına inanıyor. Bunun yerine Chrome'un amacı, unload
etkinliğini tamamen kaldırmaktır. Bu tarihe kadar desteğin sonlandırılmasının açıkça kapsamı dışında kalmayı seçen kullanıcılar için masaüstünde güvenilir olmaya devam edecektir.
unload
etkinliği neden kullanımdan kaldırılmalı?
unload
özelliğinin kullanımdan kaldırılması, içinde yaşadığımız web'in çok daha geniş bir şekilde tanınmasında önemli bir adımdır. unload
olayı, uygulama yaşam döngüsünü kontrol etme konusunda yanlış bir fikir veriyor. Bu durum, modern bilgi işlem dünyasında web'e göz atma şeklimizin her geçen gün daha da doğru olmamasına yol açıyor.
Mobil işletim sistemleri, belleği korumak için web sayfalarını sık sık donduruyor veya kaldırıyor. Masaüstü tarayıcılar da aynı nedenlerle artık bunu giderek daha fazla yapıyor. İşletim sistemi müdahaleleri olmasa bile, kullanıcılar resmi olarak "sayfalardan ayrılmadan" eski sekmeleri sık sık sekme değiştirir ve kapatır.
unload
etkinliğinin geçerliliğini yitirmesi halinde, web geliştiricileri olarak bizim paradigmamızın gerçek dünyadakilerle aynı olduğundan ve geçerliliğini yitirmiş olsalar bile artık geçerli olmayan eski kavramlara bağlı kalmadığından emin olmamız gerektiğinin farkındayız.
unload
etkinliklerine alternatifler
unload
yerine şunları kullanmanız önerilir:
visibilitychange
: Bir sayfanın görünürlüğünün ne zaman değişeceğini belirlemek için. 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ı verilerinin kaydedilmesi için en son güvenilir zamanı gösterenhidden
durumunu düşünün.pagehide
: Kullanıcının sayfadan ne zaman ayrıldığını 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 küçültüldüğünde veya başka bir sekmeye geçirildiğindepagehide
etkinliği tetiklenmez.pagehide
, bir sayfayı geri-ileri önbelleğe alınmaya uygun hale getirmediğinden, bu etkinlik tetiklendikten sonra sayfanın geri yüklenebileceğini unutmayın. Bu etkinlikte herhangi bir kaynağı temizliyorsanız sayfa geri yükleme sırasında bu kaynakların geri yüklenmesi gerekebilir.
beforeunload
etkinliğinin, iptal edilebilir bir etkinlik olması nedeniyle unload
etkinliğinden biraz farklı bir kullanım alanı vardır. Genellikle, sayfadan ayrılırken kullanıcıları kaydedilmemiş değişiklikler konusunda uyarmak için kullanılır. Bu etkinlik, bir arka plan sekmesi kapatılırsa tetiklenmeyeceğinden de güvenilir değil. beforeunload
kullanımını sınırlamanız ve yalnızca koşullu olarak eklemeniz önerilir. Bunun yerine, çoğu unload
değiştirme işlemi için yukarıdaki etkinlikleri kullanın.
Daha ayrıntılı bilgi için unload
işleyicinin hiçbir zaman kullanılmaması ile ilgili bu öneriye bakın.
unload
kullanımını algıla
unload
etkinliğinin sayfalardaki görünümlerini bulmanıza yardımcı olacak farklı araçlar vardır. Bu sayede siteler, bu etkinliği kendi kodlarında mı yoksa kitaplıklar üzerinden mi kullandıklarını öğrenebilir. Bu durum, yaklaşan desteğin sonlandırılmasından etkilenebilir.
Chrome Geliştirici Araçları
Chrome Geliştirici Araçları'nda, unload
işleyicinin 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 bulunur.
Geri-ileri önbelleği test etmek için şu adımları uygulayın:
Sayfanızda Geliştirici Araçları'nı açın, ardından Uygulama'ya gidin > Arka plan hizmetleri > Geri-ileri önbellek.
Geri-ileri önbelleği test et'i tıklayın. Chrome otomatik olarak
chrome://terms/
adresine gidip sayfanıza geri döner. Alternatif olarak, tarayıcının geri ve ileri düğmelerini de tıklayabilirsiniz.
Sayfanız geri-ileri önbelleğe alınmaya uygun değilse Geri-ileri önbellek sekmesinde sorunların bir listesi gösterilir. İşlem yapılabilir bölümünde unload
kullanıp kullanmadığınızı görebilirsiniz:
Reporting API
Reporting API, web sitesi kullanıcılarınızın unload
kullanımını tespit etmek için salt okunur bir izin politikası ile birlikte kullanılabilir.
Daha fazla bilgi için Yüklenenleri bulmak için Reporting API'yi kullanma bölümüne bakın.
Bfcache notRestoredReasons
API'si
PerformanceNavigationTiming
sınıfına eklenen notRestoredReasons
özelliği, dokümanların gezinme sırasında bfcache kullanmasının engellenip engellenmediğini ve bunun nedenini bildirir. Kullanım talimatlarını burada bulabilirsiniz. Aşağıda, mevcut bir unload
işleyicisinin yanıt nesnesi uyarısının nasıl göründüğüne ilişkin bir örnek verilmiştir:
{
children: [],
id: null,
name: null,
reasons: [
{"reason", "unload-handler"}
],
src: null,
url: "https://www.example.com/page/"
}
unload
erişimini kontrol edin
Chrome, unload
etkinliğini kademeli olarak kullanımdan kaldıracaktır. Bu süreçte, bu davranışı kontrol etmek ve yaklaşan kullanımdan kaldırma sürecine 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, unload
işleyicileri etkinleştirerek veya devre dışı bırakarak sitenizin bunlar olmadan nasıl çalışacağını test etmenize olanak tanır. Böylece, yakında yapılacak kullanımdan kaldırma işlemine hazırlanabilirsiniz. Farklı politika türleri vardır:
- İzin Politikası: Bu, site sahiplerinin HTTP üstbilgilerini kullanarak özelliklere erişimi bir site veya tek bir sayfa düzeyinde kontrol etmelerini sağlayan bir platform API'sidir.
- Kurumsal politikalar: BT yöneticilerinin kuruluşları veya işletmeleri için Chrome'u yapılandırmasına olanak tanıyan araçlardır. Google Yönetici Konsolu gibi bir yönetici panelinden yapılandırılabilirler.
- Chrome işaretleri: Bu, bağımsız bir geliştiricinin çeşitli siteler üzerindeki etkiyi test etmek için
unload
desteğinin sonlandırılması ayarını değiştirmesine olanak tanır.
İzin Politikası
Sitelerin, unload
işleyicilerin kullanımını devre dışı bırakmasına ve site performansını iyileştirmek için bfcache'den hemen faydalanmasına olanak tanımak için Chrome 115'ten İzin Politikası eklenmiştir. Siteniz için bunu nasıl ayarlayacağınızla ilgili bu örneklere bakın. Bu sayede siteler, unload
desteğinin sonlandırılmasından önce önlem alabilir.
Bu politika, sitelerin tersini yapmasına izin vermek ve unload
işleyicileri tetiklemeye devam etmeyi etkinleştirmek için Chrome 117'de genişletilecektir. Bunun nedeni, Chrome bunların gelecekte tetiklenmemesi için varsayılan ayarı değiştirmesidir. Kaldırma işleyicilerin siteniz için etkinleşmesine nasıl izin vereceğinize ilişkin bu örneklere bakın. Bu etkinleştirme sonsuza kadar sürmeyecektir ve sitelerin, unload
işleyicilerinden taşınmasına zaman tanımak için kullanılmalıdır.
Kurumsal politika
Doğru şekilde çalışması için unload
etkinliğine bağlı olan yazılımları olan kuruluşlar, kontrollerindeki cihazların kademeli olarak kullanımdan kaldı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 durumda kalır. Bir sayfa isterse daha katı bir politika ayarlayabilir. İzin Politikası'nın devre dışı bırakılmasında olduğu gibi, bu araç da zarar verme ihtimali olan değişiklikleri azaltmaya yönelik bir araçtır ancak süresiz olarak kullanılmamalıdır.
Chrome işaretleri ve komut satırı anahtarları
Kurumsal politikanın yanı sıra, Chrome bayrakları ve komut satırı anahtarları aracılığıyla her bir kullanıcı için desteği sonlandırma özelliğini devre dışı bırakabilirsiniz:
chrome://flags/#deprecate-unload
öğesinin enabled
olarak ayarlanması, kullanımdan kaldırma varsayılanını etkinleştirir ve unload
işleyicilerin etkinleşmesini önler. Bunlar, İzin Politikası aracılığıyla site bazında geçersiz kılınmaya devam edebilir ancak varsayılan olarak etkinleşmeye devam eder.
Bu ayarlar, komut satırı anahtarlarıyla da kontrol edilebilir.
Seçenek karşılaştırması
Aşağıdaki tabloda, daha önce açıklanan seçeneklerin farklı kullanımları özetlenmiştir:
Desteği sonlandırma sürecini başlatma | Desteğin sonlandırılması süreci (istisnalar dahil) | Taşıma için zamanın güvenli olması için desteği sonlandırmayı ö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 (tek tek kullanıcılar için geçerlidir) |
Evet | Hayır | Hayır |
Chrome komut satırı anahtarları (tek tek 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 değiller ve bir dokümanın imha edildiği her durumda tetiklenmeleri garanti edilmiyor. Ayrıca, unload
işleyicileri bfcache ile uyumlu değildir.
Şu anda unload
işleyicilerini kullanan siteler, mevcut unload
işleyicilerini test ederek, kaldırarak veya taşıyarak ya da son çare olarak daha fazla zamana ihtiyaç duyulması halinde desteğin sonlandırılmasını erteleyerek yaklaşan bu kullanımdan kaldırma sürecine hazırlanmalıdır.
Teşekkür
Bu makaleyi inceleme konusunda yardımcı olan Kenji Baheux, Fergal Daly, Adriana Jara ve Jeremy Wagner'a teşekkür ederiz.
Anja Bauermann'ın Unsplash'teki hero resim