Jump to content

Recommended Posts

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

 

  • Например в  блоке с новостями: ссылка дублируется аж 3 раза: ссылка на статью, ссылка с изображения, ссылка на кнопке подробнее.
  • Есть дублирующие ссылки в главном слайдере, дубли в миниатюрах каждого слайда,
  • Дубли в кнопках вида «далее», «подробнее» - даже во внутренних ссылках нельзя использовать не точные анкоры, анкор должен соответствовать теме URL , поэтому такие кнопки лучше завернуть в JS. 
  •  Категории товаров.  Принято считать, что сквозные элементы сайта, в частности меню, поисковиками не учитываются, либо учитываются очень слабо, т.к. присутствуют на каждой странице. Тем не менее имеют место быть различные варианты. Возьмем для примера 4 крупных интернет-магазина:  www.mvideo.ru, www.eldorado.ru и www.dns-shop.ru, www.tehnosila.ru. На сайте М.Видео абсолютно всё меню навигации с категориями и подкатегориями закрыто в тег noindex. Аналогичная картина на сайте Эльдорадо. Закрывать меню в noindex имеет смысл только чтобы не учитывать его текстовую составляющую, чтобы меню не попадало в сниппет на поисковой выдаче, чтобы не мешало определению релевантной страницы. Если запустит Краулер и посмотреть как он определить релевантные страницы, то можно увидеть что некоторые стр. определяются не верно.
  • Так же есть повторяющиеся ссылки в Footer , микроразметке, и т.д, и прочих элементах...

 

судя по отчету ScreaminFrog - google видит все  внутренние ссылки, воспринимает, и распределяет вес с учетом всех внутренних факторов. Ссылки нужно закрыть, но по умолчанию такого решения в Opencart не предлагается, поэтому ищем альтернативные способы, изучаем правила закрытия ссылок:

 

  1. Внутренние ссылки не должны содержать атрибута rel=”nofollow”. В противном случае вес со страницы будет утекать, то есть будет попросту испаряться.
  2. Атрибут rel=”nofollow” необходимо использовать в редких случаях случаях, когда ссылка ведет на неиндексируемую страницу.
  3. Ссылки всегда должны вести на индексируемые страницы сайта, иначе будет повторяться история, описанная в пункте №1 выше.
  4. Даже при формировании внутренних ссылок при перелинковке следует использовать уникальные анкоры.
  5. Внутренние ссылки всегда должны быть прямыми и идти строго на целевые страницы. Это значит, что переход по ссылке должен отдавать ответ 200 OK. Я не говорю о том, что битые ссылки недопустимы, это очевидно, а я говорю о том, что ссылки должны идти без промежуточных 301-редиректов (а если там еще и не 301, а 302-редирект, то совсем беда). Не редко, когда меняют структуру, либо по вине верстальщика

 

отследить на глаз многие мелочи трудно, и чтобы потом не удивляться - советую использовать краулер. (XENU или родной Screaming Frog)

 

Нашел следующие методы закрытия внешних и внутренних ссылок на jQuery AJAX:

(взяты со стороннего ресурса; там где проводили эксперимент пишут, что все способы  рабочие)

 

Вариант №1 —

<a href="#" class="link" data-link="http://goo.gl">ссылка</a>

Скрипт, который будет обрабатывать ссылку и открывать ее:

<script>$('a.link').click(function(){window.open($(this).data("link"));return false;});</script>

В этом варианте вам не надо будет производить никаких дополнительных доработок стилей в css, наша ссылка будет выглядеть как и все остальные «нормальные» ссылки.


Вариант №2 —

Код ссылки на странице:

<a href="#" class="link" rel="http://goo.gl">ссылка</a>

Скрипт, который будет обрабатывать ссылку и открывать ее:

<script>$('a.link').click(function(){window.open($(this).attr("rel"));return false;});</script>

Вариант №3 —

Код ссылки на странице:

<span class="hidden-link" data-link="http://goo.gl">ссылка</span>

Скрипт, который будет обрабатывать ссылку и открывать ее:

<script>$('.hidden-link').click(function(){window.open($(this).data('link'));return false;});</script>

как пишет автор данный вариант100% не вызовет никаких подозрений у поисковика, так как даже структурно в коде нет ссылки, а просто кусок текста (он же анкор) выделен спаном <span>, что довольно часто используется при разметке документов.

Однако и отображаться такая «ссылка» будет как обычный текст на странице. Придется пошаманить с css, чтобы имитировать ссылку. Например, добавить в свой css:

span.hidden-link {
	color: #00ff00; /*-цвет ссылки-*/
	text-decoration: underline; /*-подчеркивание-*/
	cursor: pointer; /*-указатель в виде пальца-*/
}

Вариант №4 — Еще один вариант скрытия ссылки

<span class="hidden-link" data-link="http://goo.gl">ссылка</span>

Скрипт, который будет обрабатывать ссылку и открывать ее:

<script>$('.hidden-link').replaceWith(function(){return'<a href="'+$(this).data('link')+'">'+$(this).text()+'</a>';})</script>

Отличие этого способа от предыдущего в том, что js-скрипт меняет на странице html-код «якобы» ссылки на нормальную ссылку после полной загрузки документа. Поэтому никаких правок в css вносить не придется, а ссылка будет открываться как и обычная.
Способ так же прошел проверку экспериментом — ссылка не индексируется и не видится поисковыми роботами и, соответстенно, не учитывается.

 

Вариант №5 — Универсальный вариант скрытия любого контента, например, картинок

..... Предыдущий вариант не работает в том случае, если в анкоре ссылки стоит картинка. А такие варианты довольно часто встречаются: счётчики, информеры, партнёрские баннеры. Поэтому предлагаю использовать вместо метода .text () метод .html (), он будет более универсальным.

Код элемента, в данном случае ссылки, на странице, будет такой:

<span class="hidden-link" data-link="http://goo.gl">внешняя ссылка</span>

* — Чтобы закрыть картинку, в коде, указанном выше, необходимо заменить «внешняя ссылка» на код <img src="...">.

Скрипт, который будет обрабатывать ссылку или любой другой элемент:

<script>$('.hidden-link').replaceWith(function(){return'<a href="'+$(this).data('link')+'">'+$(this).html()+'</a>';})</script>

Как вы понимаете, отличие данного способа от всех других в том, что в скрипт можно «спрятать» не только ссылку, но и картинку со ссылкой или еще что-нибудь. Все проверено — все работает :)

 

6.  Вариант №6 —  как пишут в коментариях самый лучший.

$('.hidden-link').replaceWith (function (){return'<a href="'+$(this).data ('link')+'" title="'+$(this).text ()+'">'+$(this).html ()+'</a>';})

 

Интересно кто какие варианты использует и на что нужно обратить внимание еще.

 

 

Edited by Techno1og
  • +1 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Sha
      Инструмент поможет провести системный анализ opencart страниц и расширений сайта!
       
      Модуль имеет два основных направления:
       
      1) Для пользователей:
         - Анализ модулей, расширений, дополнений сайта основываясь на архитектуре OpenCart
         - Построение наглядного timeline графика, с сортировкой по желаемому параметру
         это даст возможность выявить "узкие места" и предпринять меры по оптимизации сайта более точечно и направлено.

       
       
      DEMO
      логин: demo, пароль: demo
       
       
      2) Для разработчиков:
        - возможности описанные выше, плюс
        - построение расширенной таблицы структурированной по маршрутам, очерёдности или скорости выполнения,
        - время отработки model/view/controller каждого route, любой страницы сайта, с возможностью сортировки для сравнения,
        - простой debuger данных $data передаваемых в view каждого route. (экспериментально)

       


       
       
       
      Обратите внимание! Модуль является инструментом помогающим в работе с cms opencart/ocstore,
      и не является автоматическим бустером, компрессором, кешером и т.д. 
       
      используемые технологии:
      bootstrap.js, vue.js, opencart events.  
      Внимание: тип лицензии - доменов неограниченно!
      Сроки техподдержки и бесплатных обновлений указаны в "условия продления" по окончании данного срока более ни каких ограничений не накладывается, модуль продолжает работать как и работал!
      Модуль имеет открытый исходный код, ни каких привязок к серверам, закодированных файлов ionCube и тому подобное в модуле нет!
    • By Sha
      1 999.00 руб · Срок продления: 100.00 руб за 1 месяц
      Скачать/Купить дополнение


      Route debug board - системный аудит сайта, помощник в оптимизации сайта!
      Инструмент поможет провести системный анализ opencart страниц и расширений сайта!
       
      Модуль имеет два основных направления:
       
      1) Для пользователей:
         - Анализ модулей, расширений, дополнений сайта основываясь на архитектуре OpenCart
         - Построение наглядного timeline графика, с сортировкой по желаемому параметру
         это даст возможность выявить "узкие места" и предпринять меры по оптимизации сайта более точечно и направлено.

       
       
      DEMO
      логин: demo, пароль: demo
       
       
      2) Для разработчиков:
        - возможности описанные выше, плюс
        - построение расширенной таблицы структурированной по маршрутам, очерёдности или скорости выполнения,
        - время отработки model/view/controller каждого route, любой страницы сайта, с возможностью сортировки для сравнения,
        - простой debuger данных $data передаваемых в view каждого route. (экспериментально)

       


       
       
       
      Обратите внимание! Модуль является инструментом помогающим в работе с cms opencart/ocstore,
      и не является автоматическим бустером, компрессором, кешером и т.д. 
       
      используемые технологии:
      bootstrap.js, vue.js, opencart events.  
      Внимание: тип лицензии - доменов неограниченно!
      Сроки техподдержки и бесплатных обновлений указаны в "условия продления" по окончании данного срока более ни каких ограничений не накладывается, модуль продолжает работать как и работал!
      Модуль имеет открытый исходный код, ни каких привязок к серверам, закодированных файлов ionCube и тому подобное в модуле нет!
      Добавил Sha Добавлено 25.04.2020 Категория Инструменты, утилиты Системные требования php 5.4 и выше Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет Старая цена 1999  
    • By Sha
      499.00 руб
      Скачать/Купить дополнение


      Layout Type, ускорение мобильной версии.
      Инструмент, который поможет ускорить мобильную версию OpenCart!
       
      Как сделать шаблон адаптивным? на мобильной версии скрыть "лишние" элементы.
      Нужно, что-бы при этом не пострадало usability? переместить модули и виджеты на другие позиции.
       
      Даже топовые шаблоны, поступают именно таким образом, элементы которые "не нужны" или наоборот необходимы только в мобильной версии: либо скрываются посредством css (display:none); либо перемещаются, хорошо если flexbox или bootstrap pull push но часто с помощью навешивания множества слушателей событий javascript. Даже адаптивность bootstrap основана на таких принципах.
      Всё это создаёт лишний "вес" и нагрузку, что конечно же замедляет работу сайта и заставляет процессор пользователя работать с повышенной нагрузкой шумя как майнинг ферма.
      Мы в наших продуктах пропагандируем использовать только то, что необходимо сейчас. И исходя из этих принципов нами был разработан
       
      модуль Мобильные схемы который поможет:
      уменьшить объём страницы (предотвратить чрезмерную нагрузку на сеть),  сократить размер структуры DOM, ускорить время окончания работы ЦП, избавится от лишнего JavaScript кода (сократить время выполнения кода JavaScript), избавится от css костылей,       а так-же:
      Устранить ресурсы, блокирующие отображение, Сократить время ответа сервера (время до получения первого байта, TTFB), Использовать подходящий размер изображений,  
           и др.
           при этом даже улучшив
       
      адаптивность, гибкость в настройке и дружелюбность Вашего сайта!  
       
      Поддерживает встроенные схемы популярных модулей, например поддерживает SEOCMS.
       
      Бесплатно модуль получить можно вместе с шаблоном Roundshop.
       
      данная версия поддерживает OpenCart 2.1.x, 2.2.x, 2.3.x, ocStore 2.1.x, 2.2.x, 2.3.x
      версию для Opencart 3.x, ocStore 3.x можно скачать здесь!
       
      Техническая поддержка
      доступна пользователям из списка покупателей и только после прочтения faq:
      Если вы обращаетесь с просьбой разобраться в проблеме, то для экономии времени укажите:
      адрес сайта доступ в админ-панель доступ на FTP-сервер  
      По любым вопросам вы можете связаться с нами через:
      Личные сообщения на форуме; Режим работы с 10-00 до 18-00 по киевскому времени за исключением выходных и праздничных дней.
       
       
      Добавил Sha Добавлено 13.03.2018 Категория Кэширование, сжатие, ускорение Системные требования Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет Старая цена 0  
    • By Sha
      Инструмент, который поможет ускорить мобильную версию OpenCart!
       
      Как сделать шаблон адаптивным? на мобильной версии скрыть "лишние" элементы.
      Нужно, что-бы при этом не пострадало usability? переместить модули и виджеты на другие позиции.
       
      Даже топовые шаблоны, поступают именно таким образом, элементы которые "не нужны" или наоборот необходимы только в мобильной версии: либо скрываются посредством css (display:none); либо перемещаются, хорошо если flexbox или bootstrap pull push но часто с помощью навешивания множества слушателей событий javascript. Даже адаптивность bootstrap основана на таких принципах.
      Всё это создаёт лишний "вес" и нагрузку, что конечно же замедляет работу сайта и заставляет процессор пользователя работать с повышенной нагрузкой шумя как майнинг ферма.
      Мы в наших продуктах пропагандируем использовать только то, что необходимо сейчас. И исходя из этих принципов нами был разработан
       
      модуль Мобильные схемы который поможет:
      уменьшить объём страницы (предотвратить чрезмерную нагрузку на сеть),  сократить размер структуры DOM, ускорить время окончания работы ЦП, избавится от лишнего JavaScript кода (сократить время выполнения кода JavaScript), избавится от css костылей,       а так-же:
      Устранить ресурсы, блокирующие отображение, Сократить время ответа сервера (время до получения первого байта, TTFB), Использовать подходящий размер изображений,  
           и др.
           при этом даже улучшив
       
      адаптивность, гибкость в настройке и дружелюбность Вашего сайта!  
       
      Поддерживает встроенные схемы популярных модулей, например поддерживает SEOCMS.
       
      Бесплатно модуль получить можно вместе с шаблоном Roundshop.
       
      данная версия поддерживает OpenCart 2.1.x, 2.2.x, 2.3.x, ocStore 2.1.x, 2.2.x, 2.3.x
      версию для Opencart 3.x, ocStore 3.x можно скачать здесь!
       
      Техническая поддержка
      доступна пользователям из списка покупателей и только после прочтения faq:
      Если вы обращаетесь с просьбой разобраться в проблеме, то для экономии времени укажите:
      адрес сайта доступ в админ-панель доступ на FTP-сервер  
      По любым вопросам вы можете связаться с нами через:
      Личные сообщения на форуме; Режим работы с 10-00 до 18-00 по киевскому времени за исключением выходных и праздничных дней.
       
       
    • By RuslanLight
      Всем Здравствуйте!
      Вчера на моем сайте происходили какие-то чудеса.
      С середины дня сайт начал тормозить, зашел на хостинг и увидел что CPU перегружен до 125% (относительно тарифного плана хостинга).
      Изменений в коде ни в предыдущий ни в этот день не делались.
      При том что трафа, за этот день, в разы меньше чем было в декабря за один час. И в декабре таких глюков не было!
      Сначала начал грешить на сбой в парсинге модуля SimplePars. Выключил модуль. вырубил крон, удалил на хосте саму запись крона, обновил модификаторы, обновил кеш админки.
      Вроде попустило, но на пару минут, а потом продолжились скачки до 100-125%.
      Выключил вообще траф, всю ночь все равно были скачки с нагрузкой на CPU при почти полном отсутствии трафа (кроме ботов поисковиков кончено).
      Утром принудительно закешировал все страницы в JetCache и о чудо, попустило.
      И слайды:
      Всплеск необычной нагрузки на CPU, видно что в сравнении с предыдущим днем этот всплеск необычный - https://prnt.sc/wlyln0
      Всплеск процессов PHP, тоже необычно смотрится в сравнении с пред днем - https://prnt.sc/wlymgk
      Сразу скажу что проблем с хостингом нет, хостинг в декабре держал большую нагрузку в х10-20 раз, с тех пор особо ничего не поменялось, товары хоть и добавились (ок 15-20% от общего кол-ва), но и неактивных ушло столь-же. Но сапорт хостинга не смог дать вразумительный ответ кто грузит так проц, сказали толкьо index.php. Но через него идут по сути все процессы, поэтому что за паразит так "убивал" проц я не мог установить.

      В общем!
      Понимаю, что любую сложную систему надо оптимизировать персонально. В тч куча установленных модулей и темы, не может проходить бесследно.
      Поэтому, ищу специалиста(ов) который сможет оптимизировать/ускорить сайт по максимуму, снять нагрузку с сервера и ускорить сайт в принципе!
      OcStore 3.0.2.0
      тема - UltraStore 2.1.3
      JetCache v 18.1

      PS Сори за простыню! )
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.