07 Ekim 2009, Çarşamba
Bugün, AJAX tabanlı web sitelerinin taranabilir hale getirilmesi için yeni bir standart öneriyoruz. Bu, AJAX tabanlı zengin ve etkileşimli web sitelerindeki içeriğin, bu sürece dahil olmayı seçen herhangi bir arama motorunun sonuçlarında evrensel olarak erişilebilir kılınmasıyla hem web yöneticilerine hem de kullanıcılara fayda sağlayacaktır. Bu içeriğin taranabilir ve dizine eklenebilir olmasının web’i önemli ölçüde iyileştirebileceğine inanıyoruz.
AJAX tabanlı web siteleri kullanıcılar arasında popüler olsa da, arama motorları geleneksel olarak bu sitelerdeki içeriğe erişememektedir. Son kontrolümüze göre, bildiğimiz web sitelerinin neredeyse %70’i bir şekilde JavaScript kullanıyor. Elbette bu JavaScript’in çoğu AJAX değil, ancak arama motorları AJAX’ı ne kadar iyi tarayıp dizine ekleyebilirse, geliştiriciler web sitelerine o kadar zengin özellikler ekleyebilir ve yine de arama motorlarında görünebilirler.
Bu öneriyle ulaşmak istediğimiz hedeflerden bazıları şunlardı:
- Web sitesi büyüdükçe minimum değişiklik gereksinimi
- Kullanıcıların ve arama motorlarının aynı içeriği görmesi (cloaking olmaması)
- Arama motorlarının kullanıcıları doğrudan AJAX URL’sine yönlendirebilmesi (statik bir kopyaya değil)
- Site sahiplerinin, AJAX web sitelerinin doğru şekilde oluşturulduğunu ve dolayısıyla tarayıcının tüm içeriğe erişimi olduğunu doğrulayabilmesi
İşte ilk önerimize göre arama motorlarının AJAX’ı nasıl tarayıp dizine ekleyeceği:
- Durum bilgisi içeren (stateful) AJAX sayfaları için URL parçalarını hafifçe değiştirin
Durum bilgisi içeren AJAX sayfaları, doğrudan erişildiğinde aynı içeriği görüntüler. Bunlar, arama sonuçlarında referans verilebilecek sayfalardır.https://example.com/page?query#stategibi bir URL yerine, bu URL’lerin tanınmasını mümkün kılacak bir belirteç eklemeyi öneriyoruz:https://example.com/page?query#[FRAGMENTTOKEN]state. Web’deki mevcut URL’lerin incelenmesine dayanarak, bunun için belirteç olarak “!” (ünlem işareti) kullanılmasını öneriyoruz. Arama sonuçlarında gösterilebilecek önerilen URL şu şekilde olacaktır:https://example.com/page?query#!state. - Web sunucunuzda HTML anlık görüntüsü (snapshot) oluşturan başsız (headless) bir tarayıcı kullanın
Başsız tarayıcı, AJAX sayfasına erişmek için kullanılır ve tarayıcıdaki nihai duruma dayalı HTML kodu üretir. Yalnızca özel olarak etiketlenmiş URL’ler işlenmek üzere başsız tarayıcıya iletilir. Bunu sunucu tarafında yaparak, web sitesi sahibi oluşturulan HTML kodu üzerinde kontrol sahibi olur ve tüm JavaScript’in doğru şekilde yürütüldüğünü kolayca doğrulayabilir. Böyle bir tarayıcıya örnek olarak, Java programları için açık kaynaklı “GUI içermeyen tarayıcı” olan HtmlUnit verilebilir. - Arama motoru tarayıcılarının, durumu kaçırarak (escaping) bu URL’lere erişmesine izin verin
URL parçaları sunuculara yapılan isteklere asla gönderilmediğinden, sayfaya erişmek için kullanılan URL’yi biraz değiştirmek gerekir. Aynı zamanda bu, sunucuya JavaScript içeren bir sayfa döndürmek yerine HTML kodu oluşturmak için başsız tarayıcıyı kullanmasını söyler. Kullanıcı tarafından kullanılanlar gibi diğer mevcut URL’ler normal şekilde işlenerek başsız tarayıcı atlanır. Durum bilgisini kaçırmayı ve bir belirteçle sorgu parametrelerine eklemeyi öneriyoruz. Önceki örneği kullanarak, böyle bir URLhttps://example.com/page?query&[QUERYTOKEN]=stateşeklinde olacaktır. Web’deki mevcut URL analizimize dayanarak, belirteç olarak_escaped_fragment_kullanılmasını öneriyoruz. Önerilen URL şu hale gelecektir:https://example.com/page?query&_escaped_fragment_=state. - Kullanıcılara arama sonuçlarında orijinal URL’yi gösterin
Kullanıcı deneyimini iyileştirmek için kullanıcıları doğrudan AJAX tabanlı sayfalara yönlendirmek mantıklıdır. Bu, arama sonuçlarında orijinal URL’yi (yukarıdaki örneğimizdenhttps://example.com/page?query#!stategibi) göstererek başarılabilir. Arama motorları, Googlebot’a döndürülen dizine eklenebilir metnin, kullanıcılara döndürülen metinle aynı veya onun bir alt kümesi olduğunu kontrol edebilir.

Özetle, https://example.com/dictionary.html#AJAX gibi durum bilgisi içeren bir URL ile başlayarak, bu hem tarayıcılar hem de kullanıcılar için https://example.com/dictionary.html#!AJAX olarak kullanılabilir; bu da https://example.com/dictionary.html?_escaped_fragment_=AJAX olarak taranabilir ve sonuç olarak kullanıcılara gösterilip https://example.com/dictionary.html#!AJAX olarak erişilebilir.
Şu anda bir öneri ve prototip uygulama üzerinde çalışıyoruz. Geri bildirimlerinizi bekliyoruz; lütfen yorumlarınızı aşağıya veya Web Yöneticisi Yardım Forumumuza ekleyin. AJAX tabanlı web’i arama motorları aracılığıyla erişilebilir ve kullanışlı hale getirmeye gösterdiğiniz ilgi için teşekkür ederiz!
Blog yazısı:
John Mueller,
Web Yöneticisi Trendleri Analisti, Google Zürih
Biz bunu nasıl uyguluyoruz
Google announcements age. We keep this post here for the record, and we note for clients whether the behaviour it describes still applies today or has since been superseded.
İlgili hizmetler