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

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:

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.

Kaldırma işleminin desteğinin zaman çizelgesi.

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österen hidden 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ğinde pagehide 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:

  1. Sayfanızda Geliştirici Araçları'nı açın, ardından Uygulama'ya gidin > Arka plan hizmetleri > Geri-ileri önbellek.

  2. 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:

Chrome Geliştirici Araçları, kaldırma işleyicinin kullanıldığını gösteren geri-ileri önbellek testi aracı

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