Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / HTML, JavaScript, VBScript, CSS Новый топик    Ответить
 Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Андрей159
Member

Откуда:
Сообщений: 1615
1. Подкачка делается через $.POST и JSON
2. Минимизировал нагрузку на сервер запрашивая только самое необходимое.
3. Ссылка <a href="....."> имеет событие onclick="..." c функцией перехода
4. Функция перехода опирается на еще одну "реактивную функцию", которая на входе имеет только URL и сравнивает предыдущий URL и уже решает конкретно что сообщить серверу, чтоб подгрузить. За счет "реактивной функции" работает кнопка "Вернутся назад"
5. Функция перехода занимается практически рендером и также исполняет через eval нужные операции, которые диктует сервер.
Все.

Вопрос такой: Что, если я упущу изминения в head например: теги, дискрипшинс и только тайтл поменяю, но не так как в оригинале, а более упрощенно. Поисковик будет сравнивать версии простую и динамическую? заваливать уже поднявшись хорошо в рейтинге проект? Кто знает?
25 сен 18, 12:53    [21685313]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36536
Андрей159
Ссылка <a href="....."> имеет событие onclick="..." c функцией перехода

т.е. при наведении на ссылку внизу эксплорера не видно куда перейдём?
Какова причина такого программирования?
25 сен 18, 13:22    [21685371]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Андрей159
Member

Откуда:
Сообщений: 1615
1.
автор
"т.е. при наведении на ссылку внизу эксплорера не видно куда перейдём?"

onclick перехватывает событие раньше <a href=".."> и если вернуть return false то и вовсе отменяет действие <a href
При наведение на ссылку. Бравзер показывает куда будет осуществлен переход <a href=".."> (все как обычно)

автор
2. Какова причина такого программирования?

Возможно в 2020 году или дальше это будет стандарт. Главное какой фреймворк станет более популярней. Только не гугловский и не фейсбучный. такое мутят... :(
1. Не перегружается весь сайт, а только нужная часть
2. Скорость загрузки намного быстрее
3. Не нужно проверять все уровни доступа. Один запрос к серверу = один SELECT. Есть места где нужно больше, но я в общем.
4. Можно слушать музыку или видео и плеер не остановится во время переходов. Для этого и задумано.
5. Более отзывчивый сайт. Можно показывать дополнительно разные функций не опасаясь за нагрузку на сервер: ТОП, Кто онлайн, Последние комментарии.
Портал
25 сен 18, 13:44    [21685412]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36536
Андрей159
onclick перехватывает событие раньше <a href=".."> и если вернуть return false то и вовсе отменяет действие <a href
При наведение на ссылку. Бравзер показывает куда будет осуществлен переход <a href=".."> (все как обычно)

иными словами по русски - "куда переходим будет не видно"?
25 сен 18, 13:49    [21685421]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Андрей159
Member

Откуда:
Сообщений: 1615
автор
иными словами по русски - "куда переходим будет не видно"?

Все видно

Правой кнопкой мыши "Открыть в новом окне" и сайт откроется с перезагрузкой всей страницы. А если просто мышей кликнуть то сработает скрипт быстрей и пойдет другим путем, но результат будет тот же как и с полной загрузкою, только на много быстрее, потому что только часть информации обновляется.

Раньше у меня был сайт кинотеатр и там не было <a href а были блоки DIV с onclick="". Сайт не индексировался больше пол года даже если принудительно искать с указанием "поисковая_фраза site:мой сайт" то результата не было. Потом гугл пошел путем имитации нажатия и немного проиндексировал, но очень мало и лениво. В первую очередь индексирует если есть мапа сайта - она есть. и по ссылкам <a href
25 сен 18, 15:48    [21685582]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36536
Андрей159
Все видно

давай пример сайта в сети.
25 сен 18, 23:29    [21686057]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Андрей159
Member

Откуда:
Сообщений: 1615
автор
давай пример сайта в сети.


Могу дать по позже как сделаю в разделе все что хотел или если напишеш свой статический IP то открою доступ по IP. Старая версия работает. Я через условие IP врезаюсь для экспериментов. Хотя думаю уже завтра послезавтра открою доступ ко всем. Сегодня уже готово, но буду докручивать и не раз ломать.

А в общем, я хотел пойти легким путем и с клиента запрашивать минимум и выдавать минимум. Но если учитывать, что на каждой странице нужно менять кроме Title еще <meta name="description" и <meta name="keywords", а я хотел просто секономить на этом и свое время и время выполнения. Но уже сделал чтоб все изменялось динамически также.
26 сен 18, 00:58    [21686101]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26081
Андрей159,

поздравляю, Вы изобрели Одностраничное приложение.
Плюсы и минусы, в том числе и проблемы с SEO, расписаны во множестве статей, просто задайте вопрос поисковику.
26 сен 18, 06:46    [21686170]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26081
Андрей159,

вообще боты, в том числе и гугл с яндексом, не будут выполнять onclick, они будут ходить по ссылкам и перегружать всю страницу.
А так боты на публичных сайтах, если их не банить, генерят до фига трафика, то вот таким своим решением Вы вряд-ли минимизируете нагрузку на сервер.
26 сен 18, 06:55    [21686172]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36536
Андрей159
Могу дать по позже как сделаю

Значит выше неправда.
Не видна ваша ссылка на MouseMove и не делается показ пути в эксплорере.
В итоге - велосипед и конец темы топика.
26 сен 18, 08:29    [21686215]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Андрей159
Member

Откуда:
Сообщений: 1615
Petro123
Значит выше неправда.

Зачем мне обманывать и задавать нелепые вопросы?

Вот [url=]видео[/url]

1. Страница с полной перезагрузкой тяжело отображается. Это видно. Проблема из за рекламы. Блок 300 в ширину. На мобильной версии нафиг не нужный. Что-то хочу придумать в плане адаптивности + реклама. Может задержка, вычисление и скриптом вставлять. Потом подумаю. Но дерганния после перезагрузке по причине рекламы.
2. Потом я кликаю по ссылкам и видно что сайт не перегружается. Догружаются только нужные компоненты. В точтости как сайт ВКонтакте. Хотя до него очень далеко. Я просто сравнил что это и есть динамический сайт.
3. Кнопка назад работает благодаря функции, назвал ее "реактивная". Она рулит принимая на вход только url и сравнивает с предыдущим url. В итоге запрашивает нужную информацию для отдельных блоков.
4. Приходящая информация из сервера в формате JSON. Конвертированные объекты делятся на две половины: 1- те у которых ключ - это ID или Class элемента (обращение к нему/ним) и замена html() значения. 2 - Это скрипты, которые исполняются через Eval(), где ключ не имеет никакого значения, а значения объекта выполняются как скрипт.
5. Это вчерашнее видео. Сегодня изменяется не только отображение страницы но и информация в HEAD нужная для СЕО (хотя наверное не так было важно) и важным остаются спец.теги для корректного отображения репостов в соц.сетях (названия, описания и картинка)

Ответ получил по теме
skyANA
вообще боты, в том числе и гугл с яндексом, не будут выполнять onclick

Спасибо за помощь
26 сен 18, 23:16    [21687527]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Андрей159
Member

Откуда:
Сообщений: 1615
(на видео там есть специальная задержка чтобы не чаще 1 в секунду отправлять запросы. в одном моменте видно, что клик был, а результата - не было. Также синяя отметка - это к той же односекундной задержке относится. Когда возвращаемся назад с кнопки "назад", то 1 секунда чтоб показать текущее теперь положение)
26 сен 18, 23:19    [21687530]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36536
Андрей159
Зачем мне обманывать и задавать нелепые вопросы?
затем что при публикации такого сайта с таким дизайном на тебя обрушится критика.
При кликах обычно меняется дизайн, шаблон страницы.
И вся твоя работа пойдёт насмарку.
Получается что ты занимаешься экономией на спичках и такая работа на фиг не нужна.
Зы
Видео я просил левого угла нижнего экспорта. Где видна ссыль перехода.
27 сен 18, 09:03    [21687708]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36536
Petro123
экспорта
эксплорера
27 сен 18, 09:05    [21687709]     Ответить | Цитировать Сообщить модератору
 Re: Как Гугл и Яндекс относится к гибридному сайту (простой и динамически) ?  [new]
Андрей159
Member

Откуда:
Сообщений: 1615
Petro123,
Я предупреждал, что код будет ламаться много раз. Вот и не работает сейчас уже временно подгрузка страницы, но для вас сделал видео которое вы просили. Все там показывается. Прийдет время и сможете все попробовать сами у себя.


А что переделал и почему. Ну поменял логику. Во первых раньше сравнивались URL ДО и URL ПОСЛЕ. И я зашел в тупик, потому что множество комбинаций просто нереальное откуда и куда можно войти. А реактивная функция должна только решить маленький вопрос: а нужно ли в данный момент подгружать панель с категориями или нет. Нужно обновлять только содержимое или панель и содержимое или еще какие-то дополнительные блоки...

Поразмыслив немного мне пришла "очевидность", что лучше напрямую указывать прямо с ссылки что конкретно в данный момент пусть загружается, но это уже было решение - кнопка "назад" не будет работать. А что делать? Значит "до" и "после" анализировать вовсе не вариант - упираюсь в большое множество и подмножество. Нужно что-то по проще. А что ?

Я пришел к выводу вернуться к идее прямого указания что именно подгружать прямо с ссылки, но с маленькой доработкой. Теперь я складываю последовательность переходов в массив (записываю в последовательной очереди). В случае когда пользователь захочет вернутся назад, но в массиве уже прописано какие блоки нужно изменять. Вот на этом и остановился и это отлично работает. Но с кодом много возни. Не знаю что случилось хром последней версии под XP начал вылетать (типа как нехватает оперативки). И ругаться начал после вот такой записи
<a href="ссылка" onclick="return React(this,'ссилка')">переход</a>

Если return false - то ссылка <a href= не сработает. Вся надежда на скрипт
Если скрипт поразмышляв даст ответ !false (true например), тогда сработает обычный переход <a href="".
Раньше стояла логика if(проверка)return false;и потом React()... а теперь я только поменял return React() который тоже может выдать false и все Хром не выдержал. Точнее он работает, но в обычном режиме, а не в режиме разработчика. Приходится на Мозиле работать. Непривычно, но мне там больше нравится.


Немного непривычного для вас кода)))
		switch(true){
			case ((m=/((http)?s?:)?(\/\/vesilla\.com\.ua)?\/obl-(\d{1,2})\/(profi)\/(.+)\//.exec(u))!==null):
				react.cmd='cat.short.show';
				react.updcategory=this.isneedcat(m[6]);
				react.param.oblast=m[4];
				react.param.category=gl_catalog[m[6]]['id'];
				react.param.altnamecategory=m[6];
				react.param.user_group=dle_group;
				rengine.curl.push(m[6]);
				KASLoad(react.cmd,react.param);
				$('.catselect').removeClass('catselect');
				el=$("li[cid='"+react.param.category+"']");
				$(el).addClass('catselect');
				if(!accSetLoc)ToClick(el,true);
				if(accSetLoc)setLocation(url);
				break;
		}



+ function KASLoad(cmd,paramm)

Запрос к серверу и обновления содержимого страницы, а также скриптов
function KASLoad(cmd,paramm){
	p={cmd:cmd,}
	Object.assign(p,paramm);
	$.post('//vesilla.com.ua/go.php',p,function(m){
		e=$.parseJSON(m);
		for(k in e){
			if(k=='script'){
				for(k2 in e2=e[k]){
					eval(e2[k2]);
				}
			}else{
				$(k).html(e[k]);
			}
		}
	});
}

Уже устаревший немного код, но почти также
1. Уже не сравниваю url ДО и url ПОСЛЕ
2. Проверяю есть ли на странице нужный элемент. Если да, то эту часть окна не будем обновлять. Не подим запрос и запишем в массив, что нам не нужно было подгружать весь каталог
+ function Reactor(e,url,accSetLoc=1)
function Reactor(e,url,accSetLoc=1){
	debugger;
	if(rengine.curl[0]==$(e).attr('curl'))return false;
	if(!ToClick(e))return false;

	var react={cmd:'',param:{}}
	if(accSetLoc){
		rengine.url=url;
		rengine['oldurl']=location.href;
		rengine.activate=true;
	}
	isneedcat=function(curl){
		b=$('*[curl="'+curl+'"]');
		if(b==0)return 1;
		return 0;
	}
	chck=function(u){
		switch(true){
			case ((m=/((http)?s?:)?(\/\/vesilla\.com\.ua)?\/obl-(\d{1,2})\/(profi)\/(.+)\//.exec(u))!==null):
				react.cmd='cat.short.show';
				react.updcategory=this.isneedcat(m[6]);
				react.param.oblast=m[4];
				react.param.category=gl_catalog[m[6]]['id'];
				react.param.altnamecategory=m[6];
				react.param.user_group=dle_group;
				rengine.curl.push(m[6]);
				KASLoad(react.cmd,react.param);
				$('.catselect').removeClass('catselect');
				el=$("li[cid='"+react.param.category+"']");
				$(el).addClass('catselect');
				if(!accSetLoc)ToClick(el,true);
				if(accSetLoc)setLocation(url);
				break;
			case ..... .... :
			    ..... .... ;
			    ..... .... ;
			    ..... .... ;
       			    break;
		}
	}

	chck(rengine.url);
	return false;
}

Если пипл решит вернуться. Тут будет еще немного логики опираясь на массиве упомянутым више

+ window.onpopstate=function
window.onpopstate=function(e){
	if(rengine.activate){
		rengine.oldurl=rengine.url;
		rengine.url=location.href;
		Reactor(rengine.url,false)
	}
}

+ function setLocation(url)

Сдесь просто изменяем url для глаз пользователя и вносим его в историю бравзера
function setLocation(url){
	try {
		history.pushState(null, null, url);
		return;
	}
}
27 сен 18, 22:31    [21688580]     Ответить | Цитировать Сообщить модератору
Все форумы / HTML, JavaScript, VBScript, CSS Ответить