Google, Yahoo, Bing и другие поисковые системы сканируют сеть традиционными способами с помощью традиционных сканеров. Они запускают роботы , которые сканируют HTML на веб-страницах, собирая информацию на этом пути. Они содержат интересные слова и ищут другие ссылки на другие страницы (эти ссылки, количество их и количество их вступают в игру с SEO).
Ответ на этот вопрос связан с тем, что роботы поисковой системы работают через безгласные браузеры, и они чаще всего выполняют not имеют механизм рендеринга javascript для рендеринга javascript страницы. Это работает для большинства страниц, так как большинство статических страниц не заботятся о том, чтобы JavaScript отображал свою страницу, поскольку их содержимое уже доступно.
К счастью, сканеры более крупных сайтов начали внедрять механизм, который позволяет нам выполнять сканирование на наших JavaScript-сайтах, но это требует от нас изменения на нашем сайте.
Если мы изменим наш hashPrefix
на #!
вместо просто #
, то современные поисковые системы изменят запрос на использование _escaped_fragment_
вместо #!
. (В режиме HTML5, т.е. где у нас есть ссылки без префикса хэша, мы можем реализовать эту же функцию, посмотрев заголовок User Agent
в нашем бэкэнд).
То есть вместо запроса из обычного браузера, который выглядит так:
http://www.ng-newsletter.com/#!/signup/page
Поисковая система будет искать страницу с помощью:
http://www.ng-newsletter.com/?_escaped_fragment_=/signup/page
Мы можем установить префикс хеша наших угловых приложений с помощью встроенного метода из ngRoute
:
angular.module('myApp', [])
.config(['$location', function($location) {
$location.hashPrefix('!');
}]);
И, если мы используем html5Mode
, нам нужно реализовать это, используя метатег:
Напоминание, мы можем установить html5Mode()
с помощью функции $location
:
angular.module('myApp', [])
.config(['$location',
function($location) {
$location.html5Mode(true);
}]);
У нас есть много возможностей определить, как мы будем иметь дело с доставкой контента в поисковые системы как статическим HTML. Мы можем разместить бэкэнд самостоятельно, мы можем использовать сервис для размещения для нас фоновых функций, мы можем использовать прокси для доставки контента и т. Д. Давайте рассмотрим несколько вариантов:
Мы можем написать сервис для обработки работы с обходом нашего собственного сайта с помощью браузера без браузера, например phantomjs или zombiejs, с моментальным снимком страницы с визуализированными данными и сохранением ее как HTML. Всякий раз, когда мы видим строку запроса ?_escaped_fragment_
в запросе на поиск, мы можем доставить статический снимок HTML, который мы взяли на странице, а не на предварительно подготовленную страницу только через JS. Это требует от нас наличия бэкэнд, который поставляет наши страницы с условной логикой посередине. Мы можем использовать что-то вроде prerender.io backend в качестве отправной точки для запуска этого сами. Конечно, нам все равно нужно обрабатывать проксирование и обработку фрагментов, но это хороший старт.
Самый простой и быстрый способ получить контент в поиске двигатель должен использовать сервис Brombone , seo.js , seo4ajax и prerender.io - хорошие примеры которые будут размещать для вас вышеупомянутый контент-рендеринг. Это хороший вариант времени, когда мы не хотим иметь дело с запуском сервера / прокси. Кроме того, это обычно очень быстро.
Для получения дополнительной информации о Angular и SEO мы написали обширный учебник по этому поводу в http://www.ng-newsletter.com/posts/serious-angular -seo.html , и мы подробно описали его в нашей книге ng-book: The Complete Book on AngularJS. Проверьте это на ng-book.com .
Использование Linq
from x in Table_X
join y in Table_Y on X.YID equals Y.ID
select new {ID = x.YID , Count = x.Count()}
для получения дополнительной информации проверьте http://pgopishetty.blogspot.com/2016/04/examples-of-different-linq-queries-in-c.html