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:
- Chrome 115'te yükleme dışı bırakma için Permission-Policy API aracılığıyla gerçek ortamda test (Temmuz 2023)
- Chrome 117'de bir işaretleme etkinleştirerek yerel test (Eylül 2023)
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.
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ğindepagehide
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:
Sayfanızda Geliştirici Araçları'nı açın, ardından Uygulama > Arka plan hizmetleri > Geri/ileri önbelleği'ne gidin.
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:
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