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 ö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ş kapsamlı erişim elde ettik ve bu sayede kaldırma kullanımında önemli bir düşüş elde ettik. 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ük boşaltma 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ı aşağıdaki şekilde gerçekleşecektir:
- 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, kaldırma işleminin herhangi bir sitede 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.
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 kaldırılırken tetiklenecek şekilde tasarlandı. 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 sık 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ı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'e öncelik vermeyi tercih eder. Bu da tarayıcıların daha da güvenilmez olmasını sağlar. Safari masaüstünde de bu davranışı 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 olmasını bozacağına inanı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, 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 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
, 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. 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 ayrıntılı bilgi için unload
işleyicinin hiçbir zaman kullanılmamasıyla ilgili bu öneriye bakın.
unload
kullanımını algıla
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 hale getirmenizi 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 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 ö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 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
'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, 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ı: 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. Siteniz için bu ayarı nasıl yapacağınızla ilgili bu örneklere bakın. 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. Kaldırma işleyicilerin siteniz için etkinleşmesine nasıl izin vereceğinize ilişkin bu örneklere bakı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 potansiyel önemli 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ı
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. İzinler 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ıyla da kontrol edilebilir.
Seçenek karşılaştırması
Aşağıdaki tabloda, daha önce bahsedilen seçeneklerin farklı kullanımları özetlenmiştir:
Kullanımdan kaldırma tarihini öne alma | Desteğin sonlandırılması süreci (istisnalar dahil) | 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ı (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 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