Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон)

Здесь авторы могут постить бета-версии своих модификаций для phpBB 3.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон)

Сообщение Пчелкин »

Как-то на умном ресурсе краем глаз увидел статью о манипуляциях по разгону работы навороченных модами форумов.
Вывод сделал для себя один - при наличии тормозов, надо не удалять причину, а искать выход.
Балансировать между желанием ИМЕТЬ и возможностью УДАЛИТь из-за неработоспособности.
Татьяна5 научила кешировать запросы на некоторое время. Круто... Помогает и ощутимо.
Но не везде.
Например:
А что мы может использовать против этих таких симпатишных в работе и нудных, когда не нужны, hover-ов?
Полезем читать Вики?
Получаем -
Описание
Определяет стиль элемента при наведении на него курсора мыши, но при этом элемент еще не активирован, иными словами кнопка мыши не нажата.
Ага...мыша... ага...Тут заработали остатки мозга... А на фига они там задействованы при обновлении страниц и скроллах?
А мож можно как-то их исключать в таких случаях? Можно!!! Для этого CSS4 в помощь... А наш php его знает и умеет его слушаться... Значит мы ховеры щас задавим!!!
Порыскав по сети, напал на одну хорошую вечеринку с раздачей советов... Слизал... Делюсь...
В common.css в самое его начало вписываем

Код: Выделить всё

.disable-hover,
.disable-hover * {
  pointer-events: none !important;
}
В overall_footer.html перед блокон крона

Код: Выделить всё

<div>
	<a id="bottom" name="bottom" accesskey="z"></a>
	<!-- IF not S_IS_BOT -->{RUN_CRON_TASK}<!-- ENDIF -->
</div>
вписываем

Код: Выделить всё

<script type="text/javascript">
// <![CDATA[
var body = document.body,
    timer;

window.addEventListener('scroll', function() {
  clearTimeout(timer);
  if(!body.classList.contains('disable-hover')) {
    body.classList.add('disable-hover')
  }
  
  timer = setTimeout(function(){
    body.classList.remove('disable-hover')
  },500);
}, false);
// ]]>
</script>
Этим самым убиваем ховеры на время перемещения по страницам по высоте и размеру и получаем на порядок быстрей раскрывающие страницы форума, вдобавок - мгновенные скроллы по страницам. Браузер все подхватывает как после отпуска. Наша Мыха в это время валяется под ногами и пузо ее растет от безделья.
Есть еще идеи по разгонам и оптимизации. Настроение появится - выложу еще.
Последний раз редактировалось Пчелкин 14.09.2014 3:18, всего редактировалось 1 раз.
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: 100500 hover-ов, CSS4 и маленький сюрпраааааЙз

Сообщение xisp »

phpBBex
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: 100500 hover-ов, CSS4 и маленький сюрпраааааЙз

Сообщение Пчелкин »

Ну и гыде ты была до этого, Марфушка, с такими глубокими познаниями? Я нашел, определился, поделился... А мне не жалко... Доброта, она возвертается... :oops:
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 12 лет 9 месяцев
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: 100500 hover-ов, CSS4 и маленький сюрпраааааЙз

Сообщение Booker »

Пчелкин писал(а): Татьяна5 научила кешировать запросы на некоторое время.
Тыцните плиз, не могу найти.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: 100500 hover-ов, CSS4 и маленький сюрпраааааЙз

Сообщение Татьяна5 »

Booker писал(а):не могу найти
На форуме и нет

Можно задавать время кеширования в функции $db->sql_query вторым параметром, в секундах
К примеру, кеширования запроса на час

Код: Выделить всё

$db->sql_query($sql, 3600);
Но:
1. Далеко не все запросы можно кешировать, для некоторых запросов (и их много) это приведёт к сбоям в работе форума
2. Лёгкие запросы кешировать не надо; чтение результата из кеша может быть дольше, чем сам запрос (можно проследить через Explain)
3. Для запросов, которые выполняются более 1,5 секунд (цифра моя, для кого-то может быть другой) и возвращают одни и те же значения в течение долгого времени, более рационально использовать $cache->get и $cache->put
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: 100500 hover-ов, CSS4 и маленький сюрпраааааЙз

Сообщение xisp »

Пчелкин писал(а):Ну и гыде ты была до этого, Марфушка, с такими глубокими познаниями?
Я не увидел разницы на своём форуме.
На вашем да, можно попытаться заметить разницу, так как у вас ну очень много всего, но на большинстве форумов разницу будет не заметно.
phpBBex
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 12 лет 9 месяцев
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: 100500 hover-ов, CSS4 и маленький сюрпраааааЙз

Сообщение Booker »

Татьяна5 писал(а): 1. Далеко не все запросы можно кешировать, для некоторых запросов (и их много) это приведёт к сбоям в работе форума
У меня самый тяжёлый запрос такой:

Код: Выделить всё

SELECT u.user_id, u.username, u.user_type, u.user_colour, COUNT(p.post_id) as total_posts
FROM phpbb_users u, phpbb_posts p
WHERE p.post_time > 1410544778
AND u.user_id = p.poster_id
AND u.user_id <> 1
AND u.user_type <> 2
AND user_id <> '60'
GROUP BY u.user_id
ORDER BY total_posts DESC
LIMIT 50
Что-то можно с ним сделать?
Вложения
Безымянный.png
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: 100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон)

Сообщение Татьяна5 »

Booker писал(а):Что-то можно с ним сделать?
Откуда этот запрос? Какие значения и для чего должен возвращать? Как часто меняются эти значения? И так далее. Без анализа кода невозможно сказать, стоит ли его кешировать
По структуре запроса я бы подключила phpbb_posts по LEFT JOIN вместо CROSS JOIN (опять же - решение спорное, надо следить за возвращаемыми значениями после правок) и преобразовала бы строку '60' в тип integer.
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: 100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон)

Сообщение Пчелкин »

xisp писал(а):но на большинстве форумов разницу будет не заметно.
Хм... на двух форумах с СП "афигеть как все полетело" (с) {@ автор Пчелкин} Народ бурно фигеет от удовольствия... Админ отвязал от потолка веревку и спрятал приготовленное мыло... Да я и сам не ожидал, что при таком количестве напичканного скриптами от СП js можно темы видеть такими шустрыми... Открываю тему с 480 пунктами одной закупки... Перемещаюсь до низа легко и непринужденно... В лмчку меня уже отлюбили ("отымели" поцелуйчиками уже порядка 40 деФок, смайл "поцелуйчик" с формы ответа сбежал, не выдержал стока слюней вокруг себя...)
Ой.... Аж захотелось жить еще лет 50... "Меня так много оказывается любят" (с) {@ автор Пчелкин} :lol: 8-)
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: 100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон)

Сообщение xisp »

Ну, СП с 480 пунктами- тоже не самая распространённая штука. Тут полностью согласен.
phpBBex
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 13 лет 9 месяцев
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 75 раз
Контактная информация:

Re: 100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон)

Сообщение ВладимирТ »

Пчелкин писал(а):"отымели" поцелуйчиками уже порядка 40 деФок, смайл "поцелуйчик" с формы ответа сбежал, не выдержал стока слюней вокруг себя...

Везет тебе Саш, а меня любят одни папуасы и не только виртуально, когда мы приехали жить в племя на Новой Гвинее, пришлось целоваться со всеми старейшими жителями племени мужского рода, традиция у них. Полные кранты когда ты целуешься с небритым, голым дедом в засос и отказать нельзя, личное оскорбление, убьют.
На вкус и цвет - разный CSS
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: 100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон)

Сообщение Пчелкин »

ВладимирТ писал(а):дедом в засос
Тю... с 1917 по 1991 год целое племя в несколько сотен тысяч папуасов это делали очень даже с удовольствием... А скольких они еще засосали из заграничных папуасов в свою команду засосников, одному богу известно!!! Так что тебе еще повезло - с десяток всего... От десяти бутылок пива алкоголиками не становятся....
Аватара пользователя
ВладимирТ
phpBB 2.0.4
Сообщения: 421
Стаж: 13 лет 9 месяцев
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 75 раз
Контактная информация:

Re: 100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон)

Сообщение ВладимирТ »

Спасибо Саш, успокоил, один раз не .... :)
На вкус и цвет - разный CSS
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: 100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон)

Сообщение Пчелкин »

Цыц ты... а вот это уже с первого раза получается у них... цыц... ТСССССС... Не правильно поймут... гы....

Добавлено спустя 45 минут 44 секунды:
Поехали дальше с оптимизацией....
Есть такой вредный файл в двиге 3.0.12... Чего тока нем нет. Пихаем мы в него стока нужного и не нужного. А ведь в нем тоже должен быть порядок и есть правила размещения в нем скриптов и кодов...

И так... Вредный файл - overall_header.html

Перво на перво определимся с его началом....

В стандарте там вот это -

Код: Выделить всё

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="{S_CONTENT_DIRECTION}" lang="{S_USER_LANG}" xml:lang="{S_USER_LANG}">
<head>

<meta http-equiv="content-type" content="text/html; charset={S_CONTENT_ENCODING}" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-language" content="{S_USER_LANG}" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="keywords" content="" />
<meta name="description" content="" />
{META}
<title>{SITENAME} &bull; <!-- IF S_IN_MCP -->{L_MCP} &bull; <!-- ELSEIF S_IN_UCP -->{L_UCP} &bull; <!-- ENDIF -->{PAGE_TITLE}</title>

<!-- IF S_ENABLE_FEEDS -->
	<!-- IF S_ENABLE_FEEDS_OVERALL --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {SITENAME}" href="{U_FEED}" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_NEWS --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_FEED_NEWS}" href="{U_FEED}?mode=news" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_FORUMS --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_ALL_FORUMS}" href="{U_FEED}?mode=forums" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_TOPICS --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_FEED_TOPICS_NEW}" href="{U_FEED}?mode=topics" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_TOPICS_ACTIVE --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_FEED_TOPICS_ACTIVE}" href="{U_FEED}?mode=topics_active" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_FORUM and S_FORUM_ID --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_FORUM} - {FORUM_NAME}" href="{U_FEED}?f={S_FORUM_ID}" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_TOPIC and S_TOPIC_ID --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_TOPIC} - {TOPIC_TITLE}" href="{U_FEED}?f={S_FORUM_ID}&t={S_TOPIC_ID}" /><!-- ENDIF -->
<!-- ENDIF -->

<!--
	phpBB style name: prosilver
	Based on style:   prosilver (this is the default phpBB3 style)
	Original author:  Tom Beddard ( http://www.subBlue.com/ )
	Modified by:
-->
Из всего этого смело можно оставить только это -

Код: Выделить всё

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="{S_CONTENT_DIRECTION}" lang="{S_USER_LANG}" xml:lang="{S_USER_LANG}">
<head>

<meta http-equiv="content-type" content="text/html; charset={S_CONTENT_ENCODING}" />
<meta name="keywords" content="" />
<meta name="description" content="" />
{META}
<title>{SITENAME} &bull; <!-- IF S_IN_MCP -->{L_MCP} &bull; <!-- ELSEIF S_IN_UCP -->{L_UCP} &bull; <!-- ENDIF -->{PAGE_TITLE}</title>

<!-- IF S_ENABLE_FEEDS -->
	<!-- IF S_ENABLE_FEEDS_OVERALL --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {SITENAME}" href="{U_FEED}" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_NEWS --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_FEED_NEWS}" href="{U_FEED}?mode=news" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_FORUMS --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_ALL_FORUMS}" href="{U_FEED}?mode=forums" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_TOPICS --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_FEED_TOPICS_NEW}" href="{U_FEED}?mode=topics" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_TOPICS_ACTIVE --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_FEED_TOPICS_ACTIVE}" href="{U_FEED}?mode=topics_active" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_FORUM and S_FORUM_ID --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_FORUM} - {FORUM_NAME}" href="{U_FEED}?f={S_FORUM_ID}" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_TOPIC and S_TOPIC_ID --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_TOPIC} - {TOPIC_TITLE}" href="{U_FEED}?f={S_FORUM_ID}&t={S_TOPIC_ID}" /><!-- ENDIF -->
<!-- ENDIF -->
Остальное там мусор...
Поехали ниже... Что мы видим? А видим мы кучу вставленных модами скриптов вида -

Код: Выделить всё

<script type="text/javascript">
// <![CDATA
ТУТ ФИГНЯ ВСЯКАЯ
// ]]>
</script>
или такого вида -

Код: Выделить всё

<script type="text/javascript" src="{T_SUPER_TEMPLATE_PATH}/тут название файла js библиотека папки стилей"></script>
T_SUPER_TEMPLATE_PATH}/тут название файла js библиотека папки стилей
При этом такие строки могут вырывать js библиотеки и из других папок, тогда это - T_SUPER_TEMPLATE_PATH в таких строках выглядит немного по другому. Это не важно, важно расположение таких строк в самом файле overall_header.html.
При большом количестве таких штучек в файле с ними тоже стоит разобраться....
Верхний вид вставки js - полным кодом самого скрипта, нижний вариант - ссылкой на файл скрипта...
Наводим в этом порядок:
1. Первыми должны быть все скрипты от библиотек jquery. Все что есть подобного в файле смело перемещаем на самый верх, прям под код FEEDS-ов...
Например все вот такие -

Код: Выделить всё

<script src="{T_SUPER_TEMPLATE_PATH}/jquery-2.0.3.min.js"></script>
<script src="{T_SUPER_TEMPLATE_PATH}/jquery.timers.js"></script>
<script src="{T_SUPER_TEMPLATE_PATH}/jquery.fancybox.js"></script>
2. Затем после них размещаем любой имеющийся скрипт уведомлений о личных сообщениях. Проверено - не подводят всплывающие окна когда их скрипт находится по файлу как можно выше....
Он может быть, например, таким -

Код: Выделить всё

<!-- моргалка ЛС -->
<!-- IF S_USER_UNREAD_PRIVMSG > 0 -->
<script>
// <![CDATA[
	var newTxt="<<<! {L_YOU_NEW_PM} !>>>";
var oldTxt=document.title;

function migalka(){
    if(document.title==oldTxt){
        document.title=newTxt;
    }else{
        document.title=oldTxt;
    }
}

var timer = setInterval(migalka,1000);
// ]]>
</script>
<!-- ENDIF -->
Ну... или что-то подобное....
3. Затем в файле спокойно и медленно располагаем все вмурованные в файл скрипты с самими кодами js...
Типа этих -

Код: Выделить всё

<script>
// <![CDATA[
	function doOpenChangePoster(id)
	{
		var b = document.getElementById(id);
		if (b.style.display=='none')
		{
			b.style.display='';
		} 
		else 
		{
			b.style.display='none';
		} 
	return false;
	}
// ]]>
</script>
При этом располагать лучше с больших к меньшим по количеству кода в них....
4. И после всех натуральных js кодов располагаем по порядку ниже (не зависимо) такие -

Код: Выделить всё

<script src="{T_SUPER_TEMPLATE_PATH}/tooltip.js"></script>
5. А еще ниже всех js скриптов полных и ссылочных располагаем js скрипты находящиеся в условиях (им до полного фонаря где быть в файле, они подхватываются для исполнения только при выявленных условиях их использования...
Например -

Код: Выделить всё

<!-- IF S_VIEWFORUM or S_INDEX -->
<script src="{T_SUPER_TEMPLATE_PATH}/crawl.js"></script>
<!-- ENDIF -->
Со скриптами js вроде разобрались? Или нет? Нет.... Есть один фокус, который стоит проверить с этими js скриптами...
Можно скрипты js библиотек по одному перемещать из файла overall_header.html в файл overall_footer.html
После каждого перемещения какого - нибудь js скрипта в overall_footer.html стоит проверить досконально работу форума в части его применения. Если форум продолжает работать в его части в стандартном режиме - стоит такой js скрипт оставить в overall_footer.html. Он там легче воспринимается браузерами и страницы будут открываться немного быстрей.
Это все по части js скриптов в файле overall_header.html.Чуть позже залезем в него еще.
Господа спецы. Только не надо варнинчать по поводу побарабанства расположения данных js библиотек в указанном файле. Имеет значение. Да еще какое. Паге Спеед об этом говорит прямо и открытым текстом. Да и сам часто натыкался на отказ в работе js скриптов при расположении их в файле по другой системе. Заменил местами - работает, вернул на изначальное - опять пошли глюки. Так что - как то так....
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: 100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон)

Сообщение xisp »

Пчелкин писал(а):Из всего этого смело можно оставить только это -
Почему бы доктайп на HTML5 не заменить? Ещё минус 94 символа.

Вот это (обёртка CDATA)

Код: Выделить всё

// <![CDATA[
код яваскрипт
// ]]>
Тоже можно выкинуть. Она для браузеров, не поддерживающих (от слова вообще) тег script. А это ИЕ и опера младше 3 (!) версии.
phpBBex
Закрыто

Вернуться в «Бета-версии модов для phpBB 3.0.x»