Origin-Agent-Cluster başlığıyla performans yalıtımı isteme

Alan genelinde komut dosyası oluşturmayı sınırlandırmak ve tarayıcıdan özel kaynaklar istemek için yeni bir HTTP yanıt başlığı.

Domenic Denicola
Domenic Denicola

Origin-Agent-Cluster, yeni bir HTTP yanıt başlığıdır. Bu başlık, tarayıcıya Aynı sitenin çapraz kaynak sayfaları arasında eşzamanlı komut dosyası erişimi. Tarayıcılar ayrıca Origin-Agent-Cluster ipucu olarak, kaynağınızın özel bir süreçtir.

Tarayıcı uyumluluğu

Şu anda Origin-Agent-Cluster başlığı yalnızca Chrome 88 ve sonraki sürümlerde uygulanmaktadır. Tasarımında değerli olarak işaretleyen Mozilla Firefox temsilcileriyle yakın işbirliği içinde prototip oluşturma ve bir ön olumlu resepsiyon: webKit'in temsilcilerimizden yararlanabilirsiniz.

Ancak bu süre zarfında Origin-Agent-Cluster üstbilgisinin tüm elde etti. Anlamayan tarayıcılar onu yok sayar. Ve son olarak, kaynak içeren veya kaynaklarla ilişkili aracı kümeleri, site içeren veya sitelerle ilişkili olanlardan daha az şey yapabilir ( varsayılan olarak güncellenirse endişe edilecek bir birlikte çalışabilirlik sorunu yoktur.

Tarayıcılar neden aynı site kaynaklarını otomatik olarak ayıramaz?

Web, bir güvenlik özelliği olan aynı kaynak politikasına dayanır. Dokümanların ve komut dosyalarının başka bir kullanıcıya ait kaynaklarla origin. Örneğin, https://a.example adresinde barındırılan bir sayfa https://b.example veya https://sub.a.example adresindeki farklı bir kaynak.

Arka planda tarayıcılar, kaynakların birbirinden farklı şekillerde sağladığı ayırmayı kullanır. Eski Birbirlerinin verilerine erişemeyeceği halde farklı kaynaklar için İşletim sistemi iş parçacıkları, işlemler ve bellek ayırma gibi kaynakları paylaşma Bu demek oluyor ki diğer sekmeleri de yavaşlatıyordu. Bir sekme çok fazla bellek kullandıysa tüm tarayıcının kilitlenmesine neden olur.

Bugünlerde tarayıcılar daha sofistikedir ve farklı başlangıç noktalarını farklı daha fazla bilgi edineceksiniz. Bunun tam olarak işleyiş şekli tarayıcıya göre değişir: Çoğu tarayıcıda belirli bir düzeyde ayırma vardır görebilirsiniz, ancak tek bir sekme içindeki farklı iframe'ler aynı işlemi paylaşabilir. Süreçler ise Ancak bu komutlar, bu dosyalarda çok fazla bellek oluşmasını önlemek için buluşsal yöntemler kullanır: Örneğin, Firefox kullanıcı tarafından yapılandırılabilen bir işlem sınırı vardır. Ayrıca Chrome, masaüstü (bellek miktarı daha fazla olduğunda) ile mobil (ör. çok nadirdir).

Bu buluşsal yöntemler mükemmel değildir. Bu kişiler önemli bir sınırlamayla karşı karşıyadırlar: çünkü https://sub.a.example ve https://a.example kullanarak, tarayıcılar, alt alan adlarını otomatik olarak bir iletişim kurmaktır.

Bu varsayılan davranış "site içeren veya sitelerle ilişkili aracı kümeleri" olarak adlandırılır. Yani tarayıcı, sayfaları temel alarak sitesinde bulabilirsiniz. Yeni Origin-Agent-Cluster başlığı, tarayıcıdan bu varsayılanı değiştirmesini ister belirli bir sayfa için davranış biçimi (kaynak içeren veya kaynaklarla ilişkili aracı kümeye yerleştirilerek) tamamen aynı kaynağa sahip diğer sayfalarla değiştirin. Özellikle aynı sitenin çapraz kaynak sayfaları aracı kümesinden hariç tutulur.

Bu ayırma, tarayıcıların bu yeni kaynak içeren veya kaynaklarla ilişkili aracı kümelerine kendi verilerini vermelerine olanak tanır. diğer kaynaklarla birleştirilmeyen özel kaynaklardır. Örneğin, bu tür sayfalar ayrı ileti dizilerinde planlanabilir. Yeni bir URL'ye Origin-Agent-Cluster üstbilgisini eklerseniz, tarayıcınıza sayfanın bu tür özel kaynaklardan yararlanabileceksiniz.

Ancak ayırma işlemini gerçekleştirmek ve bu avantajları elde etmek için tarayıcının bazı eski özelliklere erişmeye devam edebilir.

Kaynak içeren veya kaynaklarla ilişkili sayfaların yapamayacağı işlemler

Sayfanız kaynak içeren veya kaynaklarla ilişkili bir aracı kümesinde olduğunda aynı siteyle konuşma özelliklerinin bir kısmını kaybedersiniz çapraz kaynak sayfaları arasında yer alıyor. Özellikle:

  • Artık şu ayarları yapamazsınız: document.domain. Bu, Normalde aynı site çapraz kaynak sayfalarının her birine eşzamanlı olarak erişmesine izin veren eski özellik other'ın DOM'sini ekler ancak kaynak içeren veya kaynaklarla ilişkili aracı kümelerinde devre dışıdır.

  • Artık gönderemezsiniz WebAssembly.Module aynı sitenin diğer çapraz kaynak sayfalarına nesneleri postMessage() aracılığıyla gönderebilir.

  • (Yalnızca Chrome) Artık SharedArrayBuffer veya WebAssembly.Memory nesneleri.

ziyaret edin.

Kaynak içeren veya kaynaklarla ilişkili aracı kümeleri ne zaman kullanılır?

Origin-Agent-Cluster başlığından en çok faydalanan kaynaklar şunlardır:

  • Mümkün olduğunda kendi özel kaynaklarından en iyi performansı elde edin. Örnek olarak şunlar verilebilir: performansı yoğun oyunlar, video konferans siteleri veya multimedya oluşturma uygulamaları

  • Kaynağı farklı, ancak aynı siteye sahip, kaynağı yoğun bir şekilde kullanan iframe'ler içerir. Örneğin, https://mail.example.com, https://chat.example.com iframe yerleştirir, kaynak anahtarlama https://mail.example.com/, sohbet ekibi tarafından yazılan kodun yanlışlıkla yazılmamasını sağlar. posta ekibi tarafından yazılan koda müdahale eder ve tarayıcı tarafından bunların ayrı birbirlerine olan performanslarının etkisini azaltmayı etkili bir şekilde çalışır.

  • Aynı sitenin farklı bir kaynağına sahip sayfalara yerleştirilmesini bekleyin yoğun bir kaynaktır. Örneğin, https://customerservicewidget.example.com görüntülü sohbet için çok sayıda kaynak bulunuyor ve bu kaynaklar boyunca çeşitli https://*.example.com, bu widget'ı yöneten ekip Origin-Agent-Cluster başlığıyla ilgili analizleri ve sunumları yerleştirenler üzerindeki performans etkisini azaltmayı deneyin.

Ayrıca, yukarıda anlatılan nadiren kullanılan kaynaklar arası iletişim özelliklerini ve sitenizin HTTPS.

Ancak sonuçta bunlar sadece birer yönerge. Kaynak içeren veya kaynaklarla ilişkili aracı kümelerinin sitenize yardımcı olup olmayacağı belirlemenin en iyi yolu ölçümlerdir. Özellikle, planlarınızı Web Verileriniz ve potansiyel olarak belleğiniz kullanımını inceleyin. (Bellek kullanımı: özellikle de potansiyel bir endişedir çünkü oyundaki işlem sayısının artması, işlem başına bellek ek yükü oluşturur.) Kaynak anahtarlama özelliğini kullanıma sunup en iyisinin gerçekleşmesini umut etmekle yetinmemelisiniz.

Bunun kökler arası erişime kapalı olması ile nasıl bir ilişkisi var?

Origin-Agent-Cluster başlığı aracılığıyla aracı kümelerinin kaynak anahtarı oluşturma işlemi ilişkili ancak ayrıdır Cross-Origin-Opener-Policy aracılığıyla kaynaklar arası erişime kapalı ve Cross-Origin-Embedder-Policy başlık.

Kendisini kökler arası erişime kapalı yapan tüm siteler, aynı aynı site çapraz kaynağını da devre dışı bırakır. iletişim özelliklerini Origin-Agent-Cluster üstbilgisini kullanırken olduğu gibi güncelleyin. Ancak Kaynaklar arası erişime kapalı olan ek bir kaynak olarak Origin-Agent-Cluster üstbilgisi, değiştirmek için tarayıcıya bir ipucu gönderir. Yani kendi projenizde Origin-Agent-Cluster üstbilgisini uygulayarak ve sonuçları, sayfa düzeninde bir değişiklik kökler arası erişime kapalı.

Origin-Agent-Cluster üstbilgisi nasıl kullanılır?

Origin-Agent-Cluster üst bilgisini kullanmak için web sunucunuzu aşağıdaki HTTP kodunu gönderecek şekilde yapılandırın yanıt başlığı:

Origin-Agent-Cluster: ?1

?1 değeri, yapılandırılmış true boole değeri için üstbilgi söz dizimi değer.

Bu üstbilgiyi yalnızca bazı sayfalara değil, kaynağınızdaki tüm yanıtlara göndermeniz önemlidir. Aksi takdirde, tarayıcının "hatırladığı" sonuçlarda tutarsızlığa neden olabilirsiniz. kaynak anahtarı görüntüleme isteğini yerine getirir ve bunu istemeyen sayfalarda bile kaynak anahtarları olur. Ya da tam tersi: İlk sayfada üst bilgisi yoksa tarayıcı, kaynağınızın giriş bilgilerini almak istemediğini veya sonraki sayfalarda üstbilgiyi yoksayar.

Tarayıcı neden her zaman başlığa uyum sağlayamıyor?

Bu "bellek"in nedeni bir kaynak için anahtarlamanın tutarlılığını sağlamaktır. Bir kampanyadaki bazı sayfalar kaynak içeren veya kaynaklarla ilişkili olmayanlar varsa, ve bu kümenin birbiriyle konuşmasına izin verilmiyordu. Bu, hem web geliştiricileri hem de tarayıcının dahili bileşenleri için çok tuhaf. Spesifikasyon Origin-Agent-Cluster değeri, daha önce olanla tutarsızsa üst bilgiyi yoksayar görünür. Chrome'da bu işlem konsol uyarısıyla sonuçlanır.

Bu tutarlılık bir göz atma bağlam grubu (sekme, pencere veya window.opener, frames[0] veya window.parent. Bu, bir kaynağın kaynak veya site anahtarıyla ilgili durumu ( veya başlığını görememesi durumunda) için tamamen yeni bir sekmesinde eskisine hiçbir şekilde bağlı değildir.

Bu ayrıntılar, Origin-Agent-Cluster başlığını test etmek için önemli olabilir. İlk kez eklenirken sayfayı yeniden yüklemek işe yaramaz; sekmeyi kapatmanız ve yeni bir sekme açmanız gerekir. bir.

Origin-Agent-Cluster üstbilgisinin uygulanıp uygulanmadığını kontrol etmek için JavaScript kullanın window.originAgentCluster mülkü. Başlığın (veya diğertrue çapraz kaynak izolasyonu gibi mekanizmalar kaynak anahtarı oluşturmaya neden olduysa; false olmadığında; ve undefined, Origin-Agent-Cluster üstbilgisini uygulamayan tarayıcılarda. Bu verilerin analiz platformunuza kaydedilmesi, yapılandırdığınız değerli bir kontrol sağlayabilir. doğru şekilde ekleyebilirsiniz.

Son olarak, Origin-Agent-Cluster üstbilgisinin yalnızca güvenli bağlamlar (ör. HTTPS'de) sayfalarında veya http://localhost sayfasında gösterilir. Yerel ana makine dışındaki HTTP sayfaları, kaynak içeren veya kaynaklarla ilişkili aracıyı desteklemez fark edebilirsiniz.

Kaynak anahtarı oluşturma bir güvenlik özelliği değildir

Kaynak içeren veya kaynaklarla ilişkili bir aracı kümesi kullanıldığında, kaynağınızı eşzamanlı erişimden izole eder aynı site çapraz kaynak sayfalarında yer alıyorsa, site yöneticisinin koruma güvenlikle ilgili başlıkları Cross-Origin-Resource-Policy ve Cross-Origin-Opener-Policy. Özellikle, aşağıdakiler gibi yan kanal saldırılarına karşı güvenilir bir koruma sağlamaz. Spectre.

Bu biraz şaşırtıcı olabilir çünkü kaynak anahtarlama bazen kaynağınızın kendi haline gelmesine neden olabilir. ve ayrı süreçler, yan kanal saldırılarına karşı önemli bir savunmadır. Ama unutmayın Origin-Agent-Cluster başlığının bu anlamda yalnızca bir ipucu olduğuna dikkat edin. Tarayıcı, kaynağınıza ayrı bir süreç verme yükümlülüğü altındadır ve bunu çeşitli nedenlerle yapmayabilir:

  • Tarayıcı, bunu yapacak teknolojiyi uygulamayabilir. Örneğin, şu anda Safari ve Firefox. ayrı sekmeleri kendi işlemlerine koyabilir, ancak iframe'ler için henüz bunu yapamaz.

  • Tarayıcı, ayrı bir işlemin ek yüküne değmeyeceğine karar verebilir. Örneğin, Düşük bellekli Android cihazlarda veya Android WebView'da Chrome mümkün olduğunca az işlem kullanır.

  • Tarayıcı, Origin-Agent-Cluster üstbilgisinde belirtilen isteği yerine getirmek isteyebilir. Ancak süreçlerden farklı izolasyon teknolojileri kullanarak bunu yapabilir. Örneğin, Chrome keşfetme işlemler yerine iş parçacıkları kullanarak gerçekleşebilir.

  • Kullanıcı veya farklı bir sitede çalıştırılan kod, daha önce site içeren veya sitelerle ilişkili bir sayfaya gitmiş olabilir tutarlılık garantisinin devreye girmesine neden olur ve Origin-Agent-Cluster üstbilgisi tamamen yoksayılacak.

Bu nedenle, kaynak içeren veya kaynaklarla ilişkili aracı kümelerini bir güvenlik özelliği olarak düşünmemek önemlidir. Bunun yerine, tarayıcının kaynak ayırmaya öncelik vermesine yardımcı olur. Bunu yapmak için olduğunu ve sizin için uygun olan belirli kaynaklardan vazgeçmeye karşılığında kullanılabilir.

Geri bildirim

Origin-Agent-Cluster cihazınızı kullanıyorsanız veya kullanmayı düşünüyorsanız Chrome ekibi görüşlerinizi öğrenmek ister. kullanabilirsiniz. Kamu yararı ve desteğiniz, özellikleri önceliklendirmemize ve diğer ne kadar önemli olduklarını bilmeniz önemlidir. @ChromiumDev adresine tweet atın ve Chrome DevRel'ın düşüncelerinizi ve deneyimlerinizi öğrenmesini sağlayın.

Spesifikasyon veya özelliğin nasıl çalıştığıyla ilgili ayrıntılar hakkında daha fazla sorunuz varsa HTML Standard GitHub deposunda bir sorun bildirin. Şu anda veya Chrome'un uygulanmasıyla ilgili herhangi bir sorunla karşılaşırsanız şu adresten hata bildirebilirsiniz: new.crbug.com değerini Internals>Sandbox>SiteIsolation olarak değiştirin.

Daha fazla bilgi

Kaynak içeren veya kaynaklarla ilişkili aracı kümeleri hakkında daha fazla bilgi edinmek için aşağıdaki bağlantılardan ayrıntılı bilgileri inceleyebilirsiniz: