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

Varsayılan değer kademeli olarak değiştirilerek unload etkinliği kademeli olarak kullanımdan kaldırılacak. Böylece, unload işleyicileri sayfalarda etkinleşmeyi bırakacak şekilde bir sayfa tarafından açık bir şekilde yeniden etkinleştirilecek.

Kullanımdan kaldırma zaman çizelgesi

Ocak 2019'da geri-ileri önbellek uygulama niyetimizi duyurduğumuzdan itibaren kaldırma davranışında değişiklikler olabileceğini belirtmiştik. Uygulama çalışmasına paralel olarak, geniş çaplı bir destek çalışması yürüttük ve bu durum, kaldırma kullanımında belirgin bir düşüşe neden oldu. Bu desteği tamamlamak amacıyla, Chrome 115'te yüklemeyi kaldırma özelliğinin kullanımdan kaldırılmasının etkisini test edecek yöntemler de sunmaya başladık:

  • Chrome 115'te Allow-Policy API for unload aracılığıyla yapılan açık gerçekleştirilen testler (Temmuz 2023)
  • Chrome 117'de bir flag'i etkinleştirerek yerel test yapma (Eylül 2023)

İletişim ve deneme aşamalarının ardından geçici olarak kullanımdan kaldırma sürecinin şu şekilde kullanıma sunulmasını bekliyoruz:

  • En popüler 50 popüler site için kaldırma işlevinin kademeli olarak işlevsiz kalacağı kapsamlı aşama (bu yazının yazıldığı sırada referans).
    • Chrome 120'deki kullanıcıların% 1'inden itibaren (Kasım 2023'ün sonunda).
    • 2024'ün 3. çeyreğinin sonuna kadar kullanıcıların% 100'ü ile sona erecek
  • Buna ek olarak, 2024'ün 3. çeyreğinden itibaren, kaldırma işleminin tüm sitelerde kademeli olarak sona ereceği genel bir aşamayı başlatmayı planlıyoruz. Bu aşama, kullanıcıların% 1'inden başlayıp 2025'in 1. çeyreğinin sonuna kadar kullanıcıların% 100'ü ile bitmektedir.

Geçici olarak kullanımdan kaldırma zaman çizelgesinin, kaldırma işlemini kaldırmak için yeterli süre sunmaması ihtimaline karşı devre dışı bırakma seçenekleri menüsü de sunulmaktadır. Amacımız, bu devre dışı bırakma işlemlerinin kaldırılacağı veya azaltılacağı son aşamanın (kaldırma işleminin kesin olarak kullanımdan kaldırılması) zaman çizelgesini belirlemek için bu hafif kullanımdan kaldırma sürecini kullanmaktır.

Kaldırma işleminin kullanımdan kaldırılmasıyla ilgili zaman çizelgesi.

Arka plan

unload, doküman kaldırılırken etkinleşecek şekilde tasarlandı. Teoride, kullanıcı bir sayfadan ayrıldığında veya oturum sonu geri çağırması olarak kod çalıştırmak için kullanılabilir.

Bu etkinliğin en sık kullanıldığı senaryolar:

  • Kullanıcı verileri kaydediliyor: Sayfadan ayrılmadan önce verileri kaydedin.
  • Temizleme görevlerini gerçekleştirme: Sayfadan ayrılmadan önce açık kaynakları kapatın.
  • Analizleri gönderme: Oturumun sonunda kullanıcı etkileşimleriyle ilgili verileri gönderme.

Ancak unload etkinliği son derece güvenilir değil.

Masaüstü Chrome ve Firefox'ta unload uygulaması makul ölçüde güvenilirdir ancak bfcache (geri-ileri önbellek) kullanımını engelleyerek sitenin performansını olumsuz yönde etkiler.

Mobil tarayıcılarda unload sekmeleri sıklıkla arka plana atılıp kapatıldığı için genellikle çalışmaz. Bu nedenle, tarayıcılar mobil cihazlarda bfcache'a unload yerine öncelik vermeyi seçerler. Bu da onları daha da güvenilmez hale getirir. Safari masaüstünde de bu davranışı kullanır.

Chrome ekibi, daha önce Chrome'da (ve Firefox'ta) makul ölçüde güvenilir bir orana sahipken masaüstünde unload yerine bfcache'e öncelik veren mobil modeli kullanmanın, onun da güvenirliğini yitirmesine yol açarak aksaklığa yol açacağına inanıyor. Bunun yerine Chrome'un amacı, unload etkinliğini tamamen kaldırmaktır. Bu tarihe kadar, desteği sonlandırmayı açıkça devre dışı bırakan kullanıcılar için uygulama masaüstünde güvenilir olmaya devam edecektir.

unload etkinliği neden kullanımdan kaldırılmalı?

unload ürününün kullanımdan kaldırılması, şu anda yaşadığımız web'in daha geniş kitlelerce bilinmesi için önemli bir adım. unload etkinliği, uygulama yaşam döngüsü üzerinde yanlış bir izlenim veriyor. Bu yanlışlık, modern bilgi işlem dünyasında web'e göz atma şeklimiz hakkında gittikçe daha yanlış hale geliyor.

Mobil işletim sistemleri, bellekten tasarruf etmek için web sayfalarını sık sık dondurur veya kaldırır. Masaüstü tarayıcılar da aynı nedenlerle artık bu işlemi giderek daha fazla yapmaktadır. İşletim sistemi müdahaleleri olmasa bile, kullanıcılar genellikle "sayfalardan çıkmadan" eski sekmeleri kapatarak sık sık sekme değiştirir.

unload etkinliğini uygunsuz olarak kaldırmak, web geliştiricileri olarak paradigmamızın gerçek dünyayla eşleştiğinden ve artık geçerliliğini yitirmiş eski kavramlara dayanmadığından emin olmamız gerektiğinin farkında olduğumuzu gösterir.

unload etkinliklerine alternatifler

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

  • visibilitychange: 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ı verilerini kaydetmek için hidden durumunu son güvenilir zaman olarak 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çildiğinde pagehide etkinliği tetiklenmez. pagehide bir sayfayı geri-ileri önbelleğe uygun hale getirmediğinden, bu etkinlik etkinleştikten sonra bir sayfanın geri yüklenebileceğini unutmayın. Bu etkinlikteki herhangi bir kaynağı temizliyorsanız söz konusu kaynakların sayfa geri yükleme işleminde geri yüklenmesi gerekebilir.

beforeunload etkinliğinin, iptal edilebilir bir etkinlik olması açısından unload ile karşılaştırıldığında farklı bir kullanım alanı vardır. Bu bildirim genellikle sayfadan çıkıldığında kullanıcıları kaydedilmemiş değişiklikler konusunda uyarmak amacıyla kullanılır. Ayrıca, arka plandaki bir sekme kapandığında etkinlik gerçekleşmeyeceğinden bu etkinlik gerçekleştirilemez. 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şleyicisinin hiçbir zaman kullanılmamasıyla ilgili bu öneriye bakın.

unload kullanımını algıla

unload etkinliğinin sayfalarda görünümünü bulmanıza yardımcı olacak farklı araçlar vardır. Bu işlem, sitelerin bu etkinliği kendi kodlarında veya kitaplıklar aracılığıyla kullanıp kullanmadığını keşfetmesini sağlar. Bu nedenle, yakında gerçekleşecek desteğin sonlandırılmasından da etkilenebilir.

Deniz Feneri

Lighthouse'un no-unload-listeners denetimi vardır. Bu denetim, sayfalarında herhangi bir JavaScript'in (üçüncü taraf kitaplıklardan alınanlar da dahil) unload etkinlik işleyici eklemesi durumunda geliştiricileri uyarır.

Kullanılan kaldırma işleyicilerini gösteren Lighthouse denetimi

Chrome Geliştirici Araçları

Chrome Geliştirici Araçları, sayfanızın geri-ileri önbelleğe alınmasını engelleyebilecek sorunları (unload işleyici kullanımı dahil) belirlemenize yardımcı olmak için bir back-foward-cache denetimi içerir.

Geri-ileri önbelleği test etmek için şu adımları uygulayın:

  1. Sayfanızda DevTools'u açıp Uygulama > Arka plan hizmetleri > Geri-ileri önbellek'e gidin.

  2. Geri-ileri önbelleği test et'i tıklayın. Chrome, sizi otomatik olarak chrome://terms/ sayfasına ve sayfanıza geri götürür. Alternatif olarak, tarayıcının geri ve ileri düğmelerini de tıklayabilirsiniz.

Sayfanız geri-ileri önbelleğe alma için 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 DevTools geri-ileri önbellek test aracı kullanılarak kaldırma işlemi yapıldı

Reporting API

Reporting API, web sitenizin kullanıcılarından unload kullanımını algılamak amacıyla salt okunur bir İzin Politikası ile birlikte kullanılabilir.

Daha fazla bilgi için usUsing Reporting API'yi (kaldırılanları bulmak için) kullanma konusuna bakın.

Bfcache notRestoredReasons API'si

PerformanceNavigationTiming sınıfına eklenen notRestoredReasons özelliği, dokümanların gezinme sırasında bfcache kullanımının engellenip engellenmediği ve bunun nedeni ile ilgili bilgileri bildirir. Kullanım talimatlarını burada bulabilirsiniz. Bu, mevcut bir unload işleyicisinin yanıt nesnesi uyarısının nasıl göründüğüne dair bir örnektir:

{
   blocked: true,
   children: [],
   id: "",
   name: "",
   reasons: [ "Internal Error", "Unload handler" ],
   src: "",
   url: "a.com"
}

unload erişimini kontrol edin

Chrome, unload etkinliğini aşamalı olarak kullanımdan kaldıracaktır. Bu sırada, bu davranışı kontrol etmek ve yaklaşan kullanımdan kaldırma sürecine hazırlanmak için farklı araçlar kullanabilirsiniz. Bu teknikleri uzun vadede kullanmamanız gerektiğini ve mümkün olan en kısa sürede bunların yerine alternatiflere geçiş yapmayı planlamanız gerektiğini unutmayın.

Aşağıdaki seçenekler, unload işleyicilerini etkinleştirerek veya devre dışı bırakarak sitenizin onlar olmadan nasıl çalışacağını test etmenize olanak tanır. Böylece, yaklaşan kullanımdan kaldırma sürecine hazırlanabilirsiniz. Farklı politika türleri vardır:

  • İzin Politikası: Site sahiplerinin HTTP üstbilgileri kullanarak özelliklere erişimi site veya tek tek 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 yönelik araçlardır. Bunlar, Google Yönetici Konsolu gibi bir yönetici paneli aracılığıyla yapılandırılabilir.
  • Chrome işaretleri: Bu ayar, geliştiricilerin çeşitli siteler üzerindeki etkisini test etmek için unload desteğinin sonlandırılması ayarını değiştirmesine olanak tanır.

İzin Politikası

Chrome 115'ten sitelerin unload işleyicilerini devre dışı bırakmasına ve site performansını iyileştirmek için bfcache'den hemen yararlanmasına olanak tanımak içinbir İzin Politikası eklendi. Siteniz için bunu nasıl ayarlayacağınızı açıklayan bu örneklere bakın. Bu sayede siteler, unload desteğinin sonlandırılmasından önce avantaj elde edebilir.

Bu Chrome 117'de genişletilerek sitelerin tersini yapmalarına ve Chrome ileride etkinleşmemesi için varsayılan ayarı değiştirdiği için unload işleyicilerini tetiklemeye devam etmeyi seçmeye izin verilecek. Siteniz için kaldırma işleyicilerinin tetiklenmesine nasıl izin vermeye devam edeceğinizle ilgili bu örneklere bakın. Bu etkinleştirme sonsuza kadar kalmayacak 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 dayalı yazılımlara sahip işletmeler, kendi kontrollerindeki cihazların kademeli olarak kullanımdan kaldırılmasını önlemek için ForcePermissionPolicyUnloadDefaultEnabled politikasını kullanabilirler. Bu politika etkinleştirildiğinde unload, tüm kaynaklar için varsayılan olarak etkin durumda kalmaya devam eder. Bir sayfa isterse daha katı bir politika belirleyebilir. İzin Politikası kapsamı dışında kalma gibi, zarar verme potansiyeli taşıyan değişiklikleri azaltan 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 flag'leri ve komut satırı ekranlarını kullanarak her bir kullanıcı için desteği sonlandırmayı devre dışı bırakabilirsiniz:

chrome://flags/#deprecate-unload bu öğenin enabled olarak ayarlanması, kullanımdan kaldırma varsayılanını öne çıkaracak ve unload işleyicilerinin etkinleşmesini engelleyecektir. Bunlar, İzin Politikası aracılığıyla site bazında geçersiz kılınabilir ancak varsayılan olarak etkinleşmeye devam eder.

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

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

Aşağıdaki tabloda, daha önce tartışılan seçeneklerin farklı kullanımları özetlenmiştir:

Kullanımdan kaldırma sürecini ileri taşıma Kullanımdan kaldırma sürecini ileri taşıma (istisnalar hariç) Taşıma işlemini güvenli bir şekilde gerçekleştirmek için 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
(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. Bu araçlar uzun süredir güvenilir değildir ve bir dokümanın yok edildiği her durumda etkinleşecekleri garanti edilmez. 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 zaman gerekirse desteğin sonlandırılmasını erteleyerek bu desteğin sonlandırılmasına hazırlanmalıdır.

Teşekkür

Bu makaleyi incelerken bize yardımcı oldukları için Kenji Baheux, Fergal Daly, Adriana Jara ve Jeremy Wagner'a teşekkür ederiz.

Anja Bauermann'ın Unsplash'teki hero resmi