Açıklama
Bu eklenti, belirli URL’lerin dinamik olarak önceden getirilmesini ya da önceden işlenmesini sağlayan kuralların tanımlanmasına olanak tanıyan Speculation Rules API desteğini ekler. Bu çekirdek Spekülatif Yükleme işlevselliği WordPress 6.8 ile birleştirildi, ancak varsayılan olarak yalnızca tutumlu bir yakınlıkla önceden getirme yapar. Buna karşılık bu eklenti, varsayılan olarak orta düzey yakınlıkla (yani bir bağlantıyla etkileşim kurulduğunda) önceden işleme yapar ve Ayarlar > Okuma yönetici ekranındaki “Spekülatif Yükleme” bölümünden kipi ve yakınlığı özelleştirmek için bir kullanıcı arayüzü sunar.
Varsayılan olarak spekülatif yükleme yalnızca oturumu kapatmış kullanıcılar için etkindir; çünkü kimliği doğrulanmamış sayfalar genellikle yalnızca önbelleğe almaya uygundur ve bu nedenle önceden getirmek/işlemek daha verimlidir. Bu da ön yüzde sıkça oturum açmış kullanıcıları barındıran sitelerin—örneğin e-ticaret, forum ya da üyelik sitelerinin—bu özellikten yararlanamayacağı anlamına gelir. Sunucunuz ek yükü kaldırabiliyorsa (örneğin kalıcı nesne önbelleğiyle), spekülatif yüklemeyi tüm oturum açmış kullanıcılar ya da yalnızca yöneticiler için etkinleştirmeyi seçebilirsiniz. Bu ayar yalnızca ön yüz sayfalarını etkiler; yönetici ekranları her zaman hariç tutulur.
Belirli URL yollarını ön getirme ve ön işleme kapsamı dışında tutmak üzere bir filtre kullanılabilir (SSS bölümüne bakın). Alternatif olarak, ön işlenmemesi gereken her bağlantıya (<a> etiketi) no-prerender CSS sınıfını ekleyebilirsiniz. Ayrıntılı bilgi için SSS bölümüne bakın.
Tarayıcı desteği
Speculation Rules API yeni bir web API’sidir; eklentinin kullandığı işlevsellik, 121 ve üzeri sürümlere sahip Chrome, Edge veya Opera gibi Chromium tabanlı tarayıcılar tarafından desteklenir. Safari ve Firefox gibi diğer tarayıcılar bu işlevselliği olumsuz bir etki yaratmadan yok sayar; yalnızca spekülatif yüklemenin sağladığı yarardan mahrum kalırlar. Bazı tarayıcı eklentilerinin önden yüklemeyi varsayılan olarak devre dışı bırakabileceğini unutmayın.
- Genel olarak Speculation Rules API için tarayıcı desteği
- Eklentinin kullandığı belge kuralları söz dizimi desteği hakkında bilgi
Bu eklentinin eski adı Spekülasyon Kuralları’ydı.
Yükleme
WordPress içinden kurulum
- Eklentiler > Yeni ekle‘yi ziyaret edin.
- Spekülatif Yükleme için arama yapın.
- Spekülatif Yükleme eklentisini yükleyip etkinleştirin.
Elle kurulum
speculation-rulesklasörünün tamamını/wp-content/plugins/dizinine yükleyin.- Eklentiler‘i ziyaret edin.
- Spekülatif Yükleme eklentisini etkinleştirin.
Ekinleştirme sonrası
- Ayarlar > Okuma yönetim ekranını ziyaret edin.
- Spekülatif yükleme için Spekülatif yükleme bölümündeki denetimleri kullanın.
SSS
-
Belirli URL’lerin prefetch ve prerender edilmesini nasıl engelleyebilirim?
-
Her URL makul biçimde önden oluşturulamaz. Statik içeriği önden oluşturmak genellikle güvenilirdir; ancak oturum kapatma URL’si gibi etkileşimli içeriği önden oluşturmak sorunlara yol açabilir. Bu nedenle
/wp-login.phpve/wp-admin/*gibi bazı WordPress çekirdek URL’leri ön getirme ve önden oluşturma dışında tutulur. Ayrıcawp_nonce_url()ile oluşturulan URL’ler (ya da_wpnoncesorgu değişkenini içerenler) venofollowbağlantıları da yok sayılır.plsr_speculation_rules_href_exclude_pathsfiltresini kullanarak başka URL desenlerini de hariç tutabilirsiniz.Aşağıdaki örnek,
https://example.com/cart/ya dahttps://example.com/cart/foogibi URL’lerin prefetch ve prerender kapsamı dışında tutulmasını sağlar:<?php add_filter( 'plsr_speculation_rules_href_exclude_paths', function ( array $exclude_paths ): array { $exclude_paths[] = '/cart/*'; return $exclude_paths; } );Bir URL’yi ön işleme kapsamı dışında tutarken yine de ön getirilmesine izin vermenin bazı durumlarda faydalı olabileceğini unutmayın. Örneğin, kullanıcı durumunu güncellemek için istemci tarafı JavaScript barındıran bir sayfa muhtemelen ön işlenmemeli, fakat ön getirilmesi makul olur.
Bu amaçla,
plsr_speculation_rules_href_exclude_pathsfiltresi koşullu dışlamalar sunmak amacıyla geçerli kipi (“prefetch” ya da “prerender”) alır.Aşağıdaki örnek,
https://example.com/products/...gibi URL’lerin ön getirilmesine izin verilirken ön işlenememesini sağlar:<?php add_filter( 'plsr_speculation_rules_href_exclude_paths', function ( array $exclude_paths, string $mode ): array { if ( 'prerender' === $mode ) { $exclude_paths[] = '/products/*'; } return $exclude_paths; }, 10, 2 );Yukarıda belirtildiği gibi, bir bağlantıya
no-prerenderCSS sınıfının eklenmesi, bağlantının önceden işlenmesini (prerender) engeller; ancak önceden getirilmesini (prefetch) engellemez. Ayrıcarel=nofollowiçeren bağlantılar ne önceden getirilir ne de önceden işlenir; çünkü bazı eklentiler bunu idempotent olmayan bağlantılara ekler (örn. sepete ekle); ideal olan, böyle bağlantıların POST isteği tetikleyen düğmeler olması ya da en azındanwp_nonce_url()kullanmalarıdır. -
Spekülatif yükleme davranışına ilişkin dikkat edilmesi gereken özel durumlar var mı?
-
Güvenlik nedeniyle, spekülatif yükleme özelliğinin tamamı varsayılan olarak oturum açmış kullanıcılar ve kalıcı bağlantı (pretty permalink) kullanmayan siteler için devre dışıdır. İkincisinin nedeni, eklentilerin kullanıcıların işlem yapabilmesi için sık sık özel sorgu parametreli URL’ler kullanması ve bu tür URL’lerin spekülatif olarak yüklenmemesi gerektiğidir. Kalıcı bağlantı kullanmayan sitelerde hangi sorgu parametrelerinin çekirdek varsayılanı, hangilerinin özel olduğunu ayırt etmek imkânsız ya da en azından son derece karmaşıktır.
Bu eklentiyi düzgün kalıcı bağlantıların etkin olmadığı bir sitede çalıştırıyorsanız ve durum değişikliklerine yol açabilecek kullanımda olan özel sorgu parametresi bulunmadığından eminseniz,
plsr_enabled_without_pretty_permalinksfiltresiyle spekülatif yüklemeyi etkinleştirmeyi tercih edebilirsiniz:<?php add_filter( 'plsr_enabled_without_pretty_permalinks', '__return_true' ); -
Bu durum analitiği ve kişiselleştirmeyi nasıl etkileyecek?
-
Prerendering, analitiği ve kişiselleştirmeyi etkileyebilir.
İstemci tarafı JavaScript için bunların, prerender etkinleştirilene kadar (örneğin bağlantıya tıklanana kadar) geciktirilmesi önerilir. Bazı çözümler (Google Analytics gibi) bunu zaten otomatik olarak yapar, bkz. Analitik üzerindeki etki. Ayrıca çapraz kaynak (cross-origin) iframe’ler etkinleştirilene kadar yüklenmez; bu da buradaki sorunların önüne geçilmesine ek olarak yardımcı olur.
Varsayılan
moderateistekliliğiyle spekülasyon yapmak, önceden oluşturulan sayfanın kullanıcı tarafından ziyaret edilmeme riskini azaltır ve böylece bu tür bir bağlantının önceden yüklenmesinin doğuracağı yan etkilerden kaçınılır. Buna karşılıkeagerile spekülasyon yapmak, önceden oluşturulan sayfaların yüklenmeyebilme riskini artırır. Alternatif olarak eklenti, yalnızca fare/imleç basıldığında (conservative) spekülasyon yapma olanağı sunar; bu, riski daha da azaltır ve bu konuda hassas olan siteler için uygun bir seçenektir, ancak daha kısa ön hazırlık süresi ve dolayısıyla daha az performans kazanımı pahasına yapılır.Önden oluşturulan bir sayfa, onu önden oluşturan sayfaya bağlıdır; bu nedenle kişiselleştirme bu aşamada zaten biliniyor olabilir ve değişiklikler (örn. başka ürünlerde gezinme ya da oturum açma/kapatma) çoğunlukla yeni bir sayfa yüklemesi, dolayısıyla yeni bir önden oluşturma gerektirir; yeni oluşturma da bu değişiklikleri hesaba katacaktır. Ama bu kesinlikle farkında olunması ve test edilmesi gereken bir şey! Durum yeni bir sayfa yüklemesi olmadan değiştiğinde bu gerekli olursa, önden oluşturulan sayfalar, standart JavaScript DOM API’leri kullanılarak sayfadan tahmin kuralları
<script>öğesi kaldırılarak iptal edilebilir. -
Eklenti hakkındaki geri bildirimimi nereye gönderebilirim?
-
Geri bildirim memnuniyetle karşılanır ve çok değerlidir; özellikle bu eklenti gelecekteki WordPress çekirdek özelliklerini barındırabilir. Yeni özelliklere ilişkin öneri ve isteklerinizi WordPress performans ekibi GitHub deposunda bir issue olarak iletebilirsiniz. Sorun giderme konusunda yardıma ihtiyacınız varsa ya da eklentiyle ilgili bir sorunuz varsa lütfen destek forumumuzda yeni bir konu açın.
-
Güvenlik hatalarını nereye bildirebilirim?
-
Performans ekibi ve WordPress topluluğu güvenlik açıklarını ciddiye alır. Bulgularınızı sorumlu bir şekilde paylaştığınız için teşekkür ederiz ve katkılarınızı takdir etmek için her türlü çabayı göstereceğiz.
Bir güvenlik sorununu bildirmek için lütfen WordPress HackerOne programını ziyaret edin.
-
Eklentiye nasıl katkıda bulunabilirim?
-
Katkılara her zaman açığız! Nasıl katkıda bulunabileceğinizi öğrenmek için Çekirdek performans ekibi el kitabı‘na göz atın.
İncelemeler
Katkıda Bulunanlar ve Geliştiriciler
“Spekülatif Yükleme” açık kaynaklı yazılımdır. Aşağıdaki kişiler bu eklentiye katkıda bulunmuşlardır.
Katkıda bulunanlar“Spekülatif Yükleme” 16 dile çevrildi. Katkıda bulundukları için çevirmenlere teşekkürler.
“Spekülatif Yükleme” eklentisini dilinize çevirin.
Geliştirmeyle ilgilenir misiniz?
Kodu görüntüleyin, SVN deposuna göz atın ya da RSS ile geliştirme günlüğüne abone olun.
Değişiklik Kaydı
1.7.0
İyileştirmeler
- Tüm PHP dosyalarına
declare( strict_types = 1 )eklendi. (2424) - Gerekli en düşük WordPress sürümü 6.9 olarak yükseltildi. (2517)
- Gerekli en düşük PHP sürümünü 7.2’den 7.4’e yükseltildi. (2469)
- Yerleşik özellik türleri ve daha sıkı statik analizle kod kalitesini iyileştir. (1729)
- Satır içi spekülasyon kuralları betiğinin JSON kodlaması sağlamlaştırıldı ve kimlik doğrulama yönetici bildirimi betiğine bir
sourceURLeklendi. (2169)
1.6.0
İyileştirmeler
- Kimliği doğrulanmış istekler için Spekülatif Yükleme katılımı eklendi. (2097)
- Kalıcı nesne önbelleği bulunmadığında kimliği doğrulanmış kullanıcılar için Spekülatif Yükleme ayarına uyarı bildirimi eklendi. (2144)
- Çekirdekle birleştirilmesinden sonraki amacını belirtmek için Spekülatif Yükleme readme açıklaması güncellendi. (2120)
1.5.0
İyileştirmeler
- Eklentinin kendi API uygulaması koşullu olarak yüklenecek biçimde Speculative Loading WP çekirdek API’si için destek eklendi. (1883)
1.4.0
İyileştirmeler
- Daha güvenli davranış için öngörülü yükleme konuları uygulandı. (1784)
1.3.1
Hata düzeltmeleri
- Spekülatif yükleme hariç tutulurken, rel değerinin yalnızca nofollow olması yerine nofollow içerip içermediği denetlendi. (1232)
1.3.0
İyileştirmeler
- Uploads, content, plugins, template veya stylesheet dizinlerine yönelik bağlantıların spekülatif olarak yüklenmesi engellendi. (1167)
- Spekülatif Yükleme’nin diğer eklentilere/temalara gömülmesi kolaylaştırıldı. (1159)
- Daha katı statik analiz denetimleriyle genel kod kalitesi iyileştirildi. (775)
- En düşük PHP gereksinimi 7.2’ye yükseltildi. (1130)
1.2.2
Hata düzeltmeleri
- JSON kodlamasını ve farklı site/ana URL’lerini hesaba katmak için href hariç tutma yollarının oluşturulması düzeltildi. (1164)
Belgeler
- Readme, tarayıcı desteği ile analitik ve kişiselleştirme hakkında SSS bölümü içerecek biçimde güncellendi. (1155)
1.2.1
İyileştirmeler
- Ayarlar bağlantısını Speculative Loading eklentisinin eylem bağlantılarına ekler. (1145)
- En düşük PHP gereksinimi 7.2’ye yükseltildi. (1130)
Hata düzeltmeleri
- _wpnonce URL’lerini tahmin kuralları (speculation rules) dışında tutar. (1143)
- rel=nofollow bağlantıları prefetch/prerender işlemlerinden hariç tutuldu. (1142)
1.2.0
- Eklentinin veritabanı seçeneğini kaldırmak için eksik olan uninstall.php dosyası eklendi. (1128)
1.1.0
- URL örüntülerinin prerendering ya da prefetching kapsamından özel olarak hariç tutulmasına izin verir. (1025)
- Eklentiyi “Spekülatif Yükleme” olarak yeniden adlandır. (1101)
- Speculative Loading üretici etiketi eklendi. (1102)
- Gerekli en düşük WP sürümü 6.4 olarak yükseltildi. (1062)
- Sınanan WordPress sürümü 6.5 olarak güncellendi. (1027)
1.0.1
- Speculation Rules içinde yol öneki kaçış karakterleriyle kodlandı ve bir yol adı olacak biçimde kısıtlandı. (951)
- JSON betiği yazdırılırken HTML5 betik tema desteği zorunlu kılındı. (952)
- Eklenti dizini için simge ve banner varlıkları eklendi. (987)
1.0.0
- Spekülatif Yükleme eklentisinin bağımsız bir eklenti olarak ilk sürümü. (733)
