При использовании Ajax History и Bookmark всегда полезно использовать "#!"вместо просто "#"? - PullRequest
4 голосов
/ 27 июля 2010

Facebook использует Ajax History (кнопка «Назад» и «Вперед») и закладку, используя #! вместо просто # в URL.Всегда ли это хорошая идея, потому что я думал, что обычный якорь может помешать механизму Ajax History запустить его в обработку обычного якоря.

Итак, функция Ajax History будет обрабатывать толькочасть хэша, только когда он видит #! вместо #.

И совместимо ли использование ! с основными браузерами?Если Facebook использует !, можно предположить, что он достаточно хорошо поддерживается.

Ответы [ 2 ]

5 голосов
/ 18 сентября 2010

См. Google Обработка приложений AJAX для сканирования для возможного варианта использования (не знаю, поэтому ли Facebook использовал этот фрагмент).

5 голосов
/ 18 сентября 2010

Обновление: этот ответ был заменен этой статьей .В нем обсуждаются проблемы с Hashbang (#!), Хэшами (#) и API истории HTML5 (pushState, popState) и решениями.

Что касается удобства использования на вашем веб-сайте, он не 'Это не имеет значения, и вы можете использовать все, что вам нравится.

Что касается поисковой оптимизации, то и то, и другое и то и другое предоставляют разные возможности для отказа.

Например, Facebook использует!в соответствии с предложением Google по обеспечению возможности сканирования Ajax-приложений .Добавляем!скажет Google, что он должен прослушать этот ajax-запрос и добавить этот URL в результаты поиска.Это отлично подходит для веб-сайтов, которые уже внедрили ajax, так как все, что вам нужно сделать, это добавить!.

Недостатком этого является то, что это только решает проблему обеспечения возможности сканирования ajax.Это не решает проблемы:

  • Поддержание чистоты и согласованности URL-адресов для пользователей Ajax и Non-Ajax.Например.Вы можете получить www.facebook.com/profile.php?pid=123#!profile.php?pid=123
  • Обеспечение доступности веб-сайта пользователям, не являющимся пользователями Ajax.
  • СохранениеURL-адреса одинаковы для пользователей Ajax и Non-Ajax.
  • Требуются некоторые очень сложные изменения на стороне сервера для экранирования и преобразования состояний в отношении строк запроса.
  • Он не совместим с новой функциональностью HTML5 PopState , которая разработаначтобы по-настоящему решить эти проблемы.

Для веб-сайтов, которые в настоящее время не используют ajax для всего, из-за вышеуказанных проблем гораздо лучше НЕ использовать Google Proposal, поскольку это обходной путь только для сайтов, таких как Facebookкоторый сошел с ума и нуждался в отчаянном решении SEO.Существуют альтернативы, которые решают больше этих проблем (и с помощью доступного сейчас HTML5 PopState может решить все проблемы).Одной из таких альтернатив является jQuery Ajaxy (как видно на balupton.com ), которая работает путем простого обновления вашего веб-сайта до приложения ajax, сохраняя при этом опыт расширенного и интерактивного Ajax-Enabledи продолжает отлично работать для пользователей с отключенным Ajax.

...