170 likes | 373 Views
Поисковая оптимизация Silverlight приложений. Максим Павловский http://www.maxpaulousky.com/ Twitter: @ paulousky. Говорим правильно. Поиск ó вая оптимизация; Поиск ó вый запрос; Поиск ó вое слово; Поиск ó вые системы.
E N D
Поисковая оптимизация Silverlight приложений Максим Павловский http://www.maxpaulousky.com/ Twitter: @paulousky
Говорим правильно • Поискóвая оптимизация; • Поискóвый запрос; • Поискóвое слово; • Поискóвые системы Новый орфоэпический словарь русского языка. Произношение. Ударение. Грамматические формы / Т.Ф. Иванова. – 2-е изд., стереотип., – М.: Рус. яз.–Медиа, 2005. – XIV, 893, [5] c.
Важность поисковой оптимизации • Если сайта нет в поисковой системе, то найти его так же трудно, как обнаружить метеорит размером со спичечную головку
Важность поисковой оптимизации • Большая часть трафика сайта генерируется поисковыми системами; • Когда не знаешь где искать, используешь поисковую систему; • Трафик ≡ доход. • Трафик моего блога www.maxpaulousky.com
Проблемы поисковой оптимизации RIA приложений • Данные загружаются динамически с сервера; • Данные предоставляются только в момент выполнения клиентского кода; • Поисковые системы не могут обрабатывать не HTML код
План доклада • Реализация доступа к содержимому посредством прямых ссылок (Deep linking); • Создание карты сайта (Sitemap) для поисковых систем; www.sitemaps.org • Предоставление данных для индексации поисковыми системами; • SEO Оптимизация Silverlight приложений, построенных на базе MVVM паттерна
Поддержка прямых ссылок • //Global.asax.cs • //Определяем отображение Urlна физические //страницы: • private void RegisterRoutes(RouteCollection routes){ • routes.MapPageRoute(“all-vacancies”, “all-vacancies”, "~/Default.aspx“,false); • routes.MapPageRoute(“vacancies-in-{region}”, “vacancies-in-{region}”, "~/Default.aspx“,false); • routes.MapPageRoute(“vacancy-{id}”,“vacancy-{id}”, "~/Default.aspx“, false); • }
Поддержка прямых ссылок • //App.xaml • //Определяем соответствие Urlв Siverlight: • <Nav:UriMapper x:Key="uriMapper"> • <Nav:UriMapping Uri="/all-vacancies" MappedUri="/View/Module.xaml?module=DashboardModule"/> • <Nav:UriMapping Uri="/vacancies-in-{region}”MappedUri="/View/Module.xaml?module=DashboardModule&region={region}"/> • <Nav:UriMapping Uri="/vacancy-{id}" MappedUri="/View/Module.xaml?module=DetailsModule&id={id}"/> • </Nav:UriMapper>
Поддержка прямых ссылок • //Module.xaml.cs • //Когда пользователь переходит по ссылке • protected override void OnNavigatedTo(NavigationEventArgs e){ • //Получаем имя модуля • string moduleParam =NavigationContext.QueryString["module"]; • //Загружаем и отображаем его • ShowModule(moduleParam); • }
Реализация поддержки прямых ссылок Демонстрация
Поддержка карты сайта (Sitemap) • //Sitemap.ashx.cs • public void ProcessRequest(HttpContext context){ • XElement root = new XElement("urlset"); • root.Add(CreateAllVacanciesElement()); • root.Add(CreateRegionVacanciesElements()); • root.Add(CreateVacancyByIdElements); • context.Response.Write(root.ToString());}
Реализация поддержки карты сайта (Sitemap) Демонстрация
Предоставление данных для индексации • //Default.aspx • <asp:GridView ID="VacanciesGridView" runat="server" DataSourceID="VacanciesDDS“ AutoGenerateColumns="true“ /> • <cc1:DomainDataSource ID="VacanciesDDS" runat="server” DomainServiceTypeName="SLJobBoardSEO.Web.VacanciesDomainService” />
Предоставление данных для индексации • //Default.aspx.cs • switch(((Route)RouteData.Route).Url) • { • //получаем параметры запроса из текущего Route • case Defines.RoutingNames.VacanciesByRegion: • //Указываем метод для получения данных • VacanciesDDS.QueryName="LoadVacanciesByRegion"; • //Передаём параметры для получения данных • VacanciesDDS.QueryParameters.Add( • RouteData.Values.First().Key,//region • RouteData.Values.First().Value.ToString()); • break; • }
Реализация отображения данных для индексации Демонстрация
Silverlight приложение в поисковых системах Демонстрация
Полезные ссылки • Основы SEO http://bit.ly/SeoBasics; • Siverlight Job Board Seo Demo http://bit.ly/SLJBSeo; • Реализация SEO для Siverlightот Брэда Абрамса http://bit.ly/AbramsSeo; • Пример интеграции Siverlight Navigation и MVVM от Джереми Ликнесса http://bit.ly/NavigationPrism • Прочее: http://bit.ly/SLSeoIlluminate, http://bit.ly/6TipsSeo, http://bit.ly/SLSeoCP