Перевешивают ли положительные стороны использования jQuery для загрузки контента негативы SEO? - PullRequest
6 голосов
/ 16 декабря 2011

В настоящее время я занимаюсь редизайном сайта и рассматриваю, слишком ли он использует .load для большей части навигации, чтобы сделать его более быстрым для пользователя и просто приятнее в использовании.

Для этого у меня есть ссылки с <a href="/the/link" id="linkId">link</a>

Затем я использую $("#main").on("click", "linkId" с return false, чтобы ссылки не отслеживались.

У меня есть /load/page.php и /page.php для предоставления либо необходимого кода загрузки, либо полной версии страницы, если пользователь идет прямо к нему.

Наконец, при всех изменениях страницы загрузки я обновляю хеш страницы, используя document.location.hash = "/" + $(this).attr("href");

Это означает, что URL-адреса сайта будут выглядеть для пользователей следующим образом:

domain.com/#/file/page

и это для поисковых систем:

domain.com/file/page

Если пользователь вводит хешированный URL-адрес, он перенаправляется со следующим кодом на реальный URL-адрес поисковой системы, так что я думаю, что у меня все есть?

if (location.href.indexOf("#") > -1) {
    location.assign(location.href.replace(/\/?#/, ""));
}

Я бы заблокировал хешированные URL-адреса от индексации и позволял бы получать только нужные URL-адреса, тогда я думал, что если людям, связанным с хэшированным URL-адресом, понадобится страница, перемещенная для seo?

Есть ли существенные недостатки в этом подходе и / или есть ли более эффективные способы при создании полностью динамических сайтов?

Ответы [ 4 ]

4 голосов
/ 16 декабря 2011

Прежде всего, я бы не использовал две версии диспетчера php. Вместо этого проверьте, является ли запрос ajax, если это так, - обслуживайте только контент (в противном случае предоставьте полный html - это должно заставить сканеры по-прежнему видеть html-версию).

во-вторых, вместо предоставления разных ссылок, используйте sth так:

$(function(){
  $('a').click(function(){
      // load content of $(this).attr('href')
      // & change the hash
      return false;
  });
});

это сделает сайт дружественным (а также дружественным к пользователю - js;))

Посмотрите на http://tkyk.github.com/jquery-history-plugin/

// - добавлено 18: 45Z

если по какой-то причине изменение диспетчера слишком сложное или невозможное, вы можете рассмотреть возможность использования функции фильтрации нагрузки jQuery (см. Документацию по загрузке jQuery), однако этот метод приводит к ненужным накладным расходам, и его лучше избегать.

1 голос
/ 16 декабря 2011

Что касается «обновления хеш-местоположения», то основные браузеры сегодня поддерживают изменение всего URL-адреса без перезагрузки страницы ( State Push State ), а не только то, что следует после #.

Вы должны реализовать эту функциональность, так как:

  1. URL выглядит лучше
  2. Если пользователь публикует ссылку на форуме / блоге / что бы вы ни хотели, чтобы сканеры связывали правильный контент сэта ссылка.

Ссылка на дополнительную информацию по этому вопросу:


Я бы заблокировал хешированные URL-адреса от индексации и разрешил бы только достижение нужных URL-адресов

Содержимое после хеш-функции остаетсяна стороне клиента, если вы не отправите его на сервер с помощью javascript или чего-либо подобного.

И поскольку сканеры обычно не выполняют javascript или «что-то подобное», вы не можете проверить, что некоторые #key не делаютЗалезайот веб-сканера.


AJAX + SEO = Нет, бигги!

Если вы все сделаете правильно, с точки зрения SEO при использовании ajax действительно не будет штрафов за дальнейшие действия.ваши посетители (и ваши серверы бэкэнда).

Хотя вам нужно держать голову прямо, потому что есть долгие ловушки, но если вы обратите внимание, все сработает.

1 голос
/ 16 декабря 2011

Вы делаете это правильно. Это основное прогрессивное улучшение. Если у пользователя нет доступа к js, он получает статическую версию независимо от того, к какому URL он обращается. Если у них есть js, то они получают ajaxified версию.

Ваш метод правильный, за исключением того, что я следую совету @ migajek в отношении проверки, является ли запрос ajax. Вот на такое решение: http://davidwalsh.name/detect-ajax.

Таким образом, вам не нужно управлять и /load/page.php, и page.php - только одним.

Кроме того, поисковые системы не будут индексировать хэш-часть URL-адреса, поэтому вам не нужно беспокоиться о блокировке этого.

1 голос
/ 16 декабря 2011

Возможно, вы захотите прочитать, как заставить приложения Ajax сканироваться в Google - http://code.google.com/web/ajaxcrawling/

...