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

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

Kullanımdan kaldırma zaman çizelgesi

Geri/ileri önbelleği uygulama niyetimizi duyurduğumuz Ocak 2019'da, boşaltma davranışının muhtemelen değişikliklere tabi olacağını belirtmiştik. Uygulama çalışmalarına paralel olarak, indirme kullanımının önemli ölçüde düşmesine neden olan geniş kapsamlı bir iletişim çalışması yürüttük. Bu bilgilendirme çalışmasına ek olarak, Chrome 115'te unload işlevinin kullanımdan kaldırılmasının etkisini test etmenin yollarını da sunmaya başladık:

Bu tanıtım ve deneme aşamalarının ardından desteğinin sonlandırılacağının duyurulmasını aşağıdaki şekilde planlıyoruz:

  • En popüler 50 sitede (bu makalenin yazıldığı tarih itibariyle referans) unload işlevinin kademeli olarak devre dışı bırakılacağı kapsamlı bir aşama.
    • Chrome 120'den itibaren kullanıcıların% 1'inden başlayarak (Kasım 2023'ün sonu).
    • 2024'ün 3. çeyreğinin sonuna kadar kullanıcıların% 100'ü
  • Ayrıca, 2024'ün 3. çeyreğinden itibaren, kullanıcıların% 1'inden başlayarak 2025'in 1. çeyreğinin sonuna kadar kullanıcıların% 100'üne ulaşacak şekilde, unload işlevinin tüm sitelerde kademeli olarak devre dışı bırakılacağı genel bir aşama başlatmayı planlıyoruz.

Bu yumuşak desteği sonlandırma zaman çizelgesinin, yükleme dışı bırakma özelliğinden geçiş için yeterli süre sağlamaması ihtimaline karşı devre dışı bırakma seçenekleri menüsü de sunduğumuzu unutmayın. Amacımız, bu kapsam dışında kalmayı seçen özelliklerin kaldırılacağı veya azaltılacağı son aşamanın zaman çizelgesini (yük boşaltmanın kullanımdan kaldırılması) bildirmek için bu desteği sonlandırmayı kullanmaktır.

Boşaltma desteğinin sonlandırılmasıyla ilgili zaman çizelgesi.

Arka plan

unload, doküman yüklenirken tetiklenecek şekilde tasarlanmıştır. Teorik olarak, kullanıcı bir 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: Sayfayı terk etmeden önce açık kaynakları kapatma.
  • Analizler gönderme: Oturum sonunda kullanıcı etkileşimleriyle ilgili verileri gönderme.

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

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.

Sekmeler sık sık arka plana alınıp kapatıldığı için mobil tarayıcılarda unload genellikle çalışmaz. Bu nedenle tarayıcılar, mobil cihazlarda unload yerine bfcache'e öncelik vermeyi tercih eder. Bu da tarayıcıların daha da güvenilmez olmasını sağlar. Safari, bu davranışı masaüstünde de kullanır.

Chrome ekibi, masaüstünde bfcache'e unload yerine öncelik veren mobil modeli kullanmak, daha önce Chrome'da (ve Firefox'ta) makul düzeyde güvenilir olan bu özelliği masaüstünde de daha güvenilmez hale getirerek bozucu olacağını düşünüyor. Bunun yerine Chrome'un amacı, unload etkinliğini tamamen kaldırmaktır. Bu tarihe kadar, desteğin sonlandırılmasını açıkça devre dışı bırakanlar masaüstünde bu özelliği güvenle kullanabilir.

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

unload desteğinin sonlandırılması, içinde yaşadığımız web'in çok daha geniş 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 durum, modern bilgisayar dünyasında web'e göz atma şeklimizle giderek daha alakasız hale geliyor.

Mobil işletim sistemleri, bellek tasarrufu yapmak için web sayfalarını sık sık dondurur veya sayfaları kaldırır. Masaüstü tarayıcılar da aynı nedenlerle artık bunu giderek daha fazla yapıyor. İşletim sistemi müdahalesi olmadan bile kullanıcılar, "sayfalardan ayrılmadan" sekme değiştirip eski sekmeleri kapatır.

unload etkinliğinin kullanımdan kaldırılması, web geliştiricileri olarak paradigmamızın gerçek dünyayla eşleştiğinden emin olmamız ve artık geçerliliğini yitirmiş eski kavramlara (eğer geçerliydilerse) bağlı kalmamamız gerektiğinin kabulü anlamına gelir.

unload etkinliklerine alternatifler

unload yerine şunları kullanmanız önerilir:

  • visibilitychange: Bir sayfanın görünürlüğünün ne zaman değiştiğini belirlemek için. Bu etkinlik, kullanıcı sekme değiştirdiğinde, tarayıcı penceresini en aza indirdiğinde veya yeni bir sayfa açtığında gerçekleşir. Uygulama ve kullanıcı verilerini kaydetmek için son güvenilir zamanı hidden durumunu göz önünde bulundurun.
  • 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 yalnızca küçültüldüğünde veya başka bir sekmeye geçtiğinde pagehide etkinliği tetiklenmez. pagehide, sayfayı geri/ileri önbelleğe uygun hale getirmediğinden, bu etkinlik tetiklendikten sonra sayfanın geri yüklenebileceğini unutmayın. Bu etkinlikte temizlik yapıyorsanız sayfayı geri yüklerken 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. Bu mesaj, genellikle kullanıcıları sayfadan ayrılırken kaydedilmemiş değişiklikler konusunda uyarmak için kullanılır. Arka plan sekmesi kapatılırsa tetiklenmeyeceği için bu etkinlik de güvenilir değildir. beforeunload'ün kullanımını sınırlamanız ve yalnızca koşullu olarak eklemeniz önerilir. Bunun yerine, çoğu unload değişimi için yukarıdaki etkinlikleri kullanın.

Daha fazla bilgi için unload işleyicisini hiçbir zaman kullanmama hakkındaki bu tavsiyeye göz atın.

unload'ün kullanımını algılama

unload etkinliğinin sayfalarda nerede göründüğünü bulmanıza yardımcı olacak çeşitli araçlar vardır. Bu sayede siteler, bu etkinliği kendi kodlarında veya kitaplıklar aracılığıyla kullanıp kullanmadıklarını ve bu nedenle yakında kullanımdan kaldırılacak olan bu durumdan etkilenip etkilenmeyeceklerini keşfedebilir.

Chrome Geliştirici Araçları

Chrome Geliştirici Araçları, unload işleyicisinin kullanımı da dahil olmak üzere sayfanızı geri/ileri önbelleğe almaya uygun olmasını engelleyebilecek sorunları belirlemenize yardımcı olmak için bir 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ği test et'i tıklayın. Chrome sizi otomatik olarak chrome://terms/ sayfasına ve ardından 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 alınmaya uygun değilse Geri/ileri önbelleğe alma sekmesinde sorunların listesi gösterilir. İşlenebilir bölümünde, unload'yi kullanıp kullanmadığınızı görebilirsiniz:

Bir boşaltma işleyicinin kullanıldığını gösteren Chrome Geliştirici Araçları Geri/ileri önbelleği test aracı

Reporting API

Reporting API, web sitesi kullanıcılarınız tarafından unload kullanımının algılanması için salt okunur bir izin politikasıyla birlikte kullanılabilir.

Daha fazla bilgi için Boşaltma işlemlerini bulmak için Reporting API'yi kullanma başlıklı makaleyi inceleyin.

Bfcache notRestoredReasons API

PerformanceNavigationTiming sınıfına eklenen notRestoredReasons mülkü, dokümanların gezinme sırasında bfcache kullanmasının engellenip engellenmediği ve neden engellendiğini bildirir. Kullanım talimatlarını burada bulabilirsiniz. Aşağıda, mevcut bir unload dinleyicinin 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-handler"}
   ],
   src: null,
   url: "https://www.example.com/page/"
}

unload'a erişimi kontrol etme

Chrome, unload etkinliğinin desteğini kademeli olarak sonlandıracak. Bu süre zarfında bu davranışı kontrol etmek ve desteğin sonlandırılmasına hazırlanmak için farklı araçlar kullanabilirsiniz. Bu tekniklere uzun vadede güvenmemeli ve en kısa sürede alternatiflere geçmeyi planlamalısınız.

Aşağıdaki seçenekler, sitenizin bu işleyiciler olmadan nasıl çalışacağını test etmek için unload işleyicilerini etkinleştirmenize veya devre dışı bırakmanıza olanak tanır. Böylece, desteğin sonlandırılmasına hazırlanabilirsiniz. Farklı politika türleri vardır:

  • İzin Politikası: Site sahiplerinin, HTTP üstbilgilerini kullanarak site veya tek bir sayfa düzeyinde özelliklere erişimi kontrol etmesine olanak tanıyan bir platform API'sidir.
  • Kuruluş politikaları: BT yöneticilerinin Chrome'u kuruluşları veya işletmeleri için yapılandırabileceği araçlar. Google Yönetici Konsolu gibi bir yönetici paneli üzerinden yapılandırılabilirler.
  • Chrome işaretleri: Bu, geliştiricilerin unload desteği sonlandırma ayarını değiştirerek çeşitli sitelerdeki etkiyi test etmesine 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 amacıyla Chrome 115'ten itibaren bir izin politikası eklendi. Bu özelliği siteniz için nasıl ayarlayacağınızla ilgili örnekleri inceleyin. Bu sayede siteler, unload desteğinin sonlandırılmasından önce hazırlık yapabilir.

Chrome, unload işleyicilerinin gelecekte tetiklenmemesi için varsayılan ayarı değiştirdiğinden, bu Chrome 117'de genişletilecek ve sitelerin tam tersini yapmasına, ayrıca unload işleyicilerini tetiklemeye devam etmeyi etkinleştirmesine olanak tanıyacak. Siteniz için boşaltma işleyicilerinin tetiklenmesine nasıl izin vermeye devam edeceğinizle ilgili bu örneklere göz atın. Bu etkinleştirme işlemi sonsuza kadar geçerli olmayacak ve sitelerin unload işleyicilerinden geçiş yapmasına zaman tanımak için kullanılmalıdır.

Enterprise politikası

Doğru şekilde çalışması için unload etkinliğine bağlı yazılımlara sahip olan kuruluşlar, kontrollerindeki 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 olmaya devam eder. Ancak sayfalar isterse daha katı bir politika belirleyebilir. İzinler Politikası kapsamı dışında kalma seçeneği gibi bu da, önemli değişikliklerin olası etkilerini azaltmaya yönelik bir araçtır ancak süresiz olarak kullanılmamalıdır.

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

Enterprise politikasının yanı sıra, Chrome işaretleri ve komut satırı anahtarları aracılığıyla desteğin sonlandırılmasını tek tek kullanıcılar için devre dışı bırakabilirsiniz:

chrome://flags/#deprecate-unload Bu değeri enabled olarak ayarlamak, desteğin sonlandırılmasına ilişkin varsayılan ayarı öne çıkarır ve unload işleyicilerinin tetiklenmesini engeller. İzin Politikası aracılığıyla site bazında geçersiz kılınmaya devam edebilirler ancak varsayılan olarak etkin olmaya devam ederler.

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

Seçenekleri karşılaştırma

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

Kullanımdan kaldırma tarihini öne alma Kullanımdan kaldırma tarihini öne alma (istisnalarla) Taşıma işlemi için zaman kazanmak amacıyla desteğin sonlandırılmasını önleme
İzinler 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
(her kullanıcı için geçerlidir)
Evet Hayır Hayır
Chrome komut satırı anahtarları
(her kullanıcı için geçerlidir)
Evet Hayır Evet

Sonuç

unload işleyicilerin desteği sonlandırılıyor. Bu e-postalar uzun süredir güvenilir değildir ve bir dokümanın silindiği tüm durumlarda gönderileceği garanti edilmez. Ayrıca, unload işleyicileri bfcache ile uyumlu değildir.

Şu anda unload işleyicileri kullanan siteler, mevcut unload işleyicileri test ederek, kaldırarak veya taşıyarak ya da son çare olarak daha fazla zamana ihtiyaç duyuyorsa desteğin sonlandırılmasını erteleyerek bu desteğin sonlandırılmasına hazırlanmalıdır.

Teşekkür ederiz

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

Unsplash'ta Anja Bauermann tarafından oluşturulan hero resim