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.
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ğinin geçerliliğini yitirmesinin, 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 (varsa) artık geçerli olmadığının bilincindeyiz.
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çinhidden
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ğindepagehide
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 bu etkinlik etkinleşmeyeceğinden güvenilir değildir. 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.
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-forward-cache
denetimi içerir.
Geri-ileri önbelleği test etmek için şu adımları uygulayın:
Sayfanızda DevTools'u açıp Uygulama > Arka plan hizmetleri > Geri-ileri önbellek'e gidin.
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:
Reporting API
Reporting API, web sitenizin kullanıcılarından unload
kullanımını tespit etmek üzere salt okunur bir İzin Politikası ile birlikte kullanılabilir.
Daha fazla bilgi için Kaldırma işlemlerini 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 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:
{
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 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 işaretleri ve komut satırı anahtarları aracılığıyla bireysel kullanıcılar 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.
Bildirimler
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