• 100500 hover-ов, CSS4 и маленький сюрпраЙз (разгон) • 
Как-то на умном ресурсе краем глаз увидел статью
При создании темы о вопросах для двигателя форумов phpBB ветки до версии 3.0.14 название темы должно начинаться с короткого названия вопроса на русском языке с Большой буквы. Создание тем в данном подфоруме только не о модах. Темы о модах для ветки до версии 3.0.14 в соседнем подфоруме. И помните - Вам тут никто ничего не должен. При малейшем "приказном" тоне в сообщениях - бан на вечно.

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

Сообщение Разместил Александр Лешванов 05 янв 2018, 13:28

Как-то на умном ресурсе краем глаз увидел статью о манипуляциях по разгону работы навороченных модами форумов.
Вывод сделал для себя один - при наличии тормозов, надо не удалять причину, а искать выход.
Балансировать между желанием ИМЕТЬ и возможностью УДАЛИТь из-за неработоспособности.
Татьяна5 научила кешировать запросы на некоторое время. Круто... Помогает и ощутимо.

Аватар пользователя
Александр Лешванов
(можно Николаич)
(можно Николаич) 
*
Google Chrome 49.0.262 Google Chrome 49.0.262
Windows XP Windows XP
Монитор: 1152 x 864 1152 x 864

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

Сообщение Разместил Александр Лешванов 05 янв 2018, 13:30

Но не везде.
Например:
А что мы может использовать против этих таких симпатишных в работе и нудных, когда не нужны, 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>

Этим самым убиваем ховеры на время перемещения по страницам по высоте и размеру и получаем на порядок быстрей раскрывающие страницы форума, вдобавок - мгновенные скроллы по страницам. Браузер все подхватывает как после отпуска. Наша Мыха в это время валяется под ногами и пузо ее растет от безделья.

Аватар пользователя
Александр Лешванов
(можно Николаич)
(можно Николаич) 
*
Google Chrome 49.0.262 Google Chrome 49.0.262
Windows XP Windows XP

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

Сообщение Разместил Татьяна5 05 янв 2018, 13:32

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

Но:
1. Далеко не все запросы можно кешировать, для некоторых запросов (и их много) это приведёт к сбоям в работе форума
2. Лёгкие запросы кешировать не надо; чтение результата из кеша может быть дольше, чем сам запрос (можно проследить через Explain)
3. Для запросов, которые выполняются более 1,5 секунд (цифра моя, для кого-то может быть другой) и возвращают одни и те же значения в течение долгого времени, более рационально использовать $cache->get и $cache->put
Аватар пользователя
Татьяна5
Профессор форума
Профессор форума 
*
Google Chrome 49.0.262 Google Chrome 49.0.262
Windows XP Windows XP

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

Сообщение Разместил Александр Лешванов 05 янв 2018, 13:35

Поехали дальше с оптимизацией....
Есть такой вредный файл в двиге 3.0.Х... Чего тока нем нет. Пихаем мы в него стока нужного и не нужного. А ведь в нем тоже должен быть порядок и есть правила размещения в нем скриптов и кодов...
И так... Вредный файл - 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 -->

Остальное там мусор...

Аватар пользователя
Александр Лешванов
(можно Николаич)
(можно Николаич) 
*
Google Chrome 49.0.262 Google Chrome 49.0.262
Windows XP Windows XP

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

Сообщение Разместил Александр Лешванов 05 янв 2018, 13:37

Поехали ниже... Что мы видим? А видим мы кучу вставленных модами скриптов вида -
Код: выделить все
<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 - полным кодом самого скрипта, нижний вариант - ссылкой на файл скрипта...
Наводим в этом порядок:

Аватар пользователя
Александр Лешванов
(можно Николаич)
(можно Николаич) 
*
Google Chrome 49.0.262 Google Chrome 49.0.262
Windows XP Windows XP

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

Сообщение Разместил Александр Лешванов 05 янв 2018, 13:38

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>

Аватар пользователя
Александр Лешванов
(можно Николаич)
(можно Николаич) 
*
Google Chrome 49.0.262 Google Chrome 49.0.262
Windows XP Windows XP

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

Сообщение Разместил Александр Лешванов 05 янв 2018, 13:39

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 -->

Ну... или что-то подобное....

Аватар пользователя
Александр Лешванов
(можно Николаич)
(можно Николаич) 
*
Google Chrome 49.0.262 Google Chrome 49.0.262
Windows XP Windows XP

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

Сообщение Разместил Александр Лешванов 05 янв 2018, 13:40

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>

При этом располагать лучше с больших к меньшим по количеству кода в них....

Аватар пользователя
Александр Лешванов
(можно Николаич)
(можно Николаич) 
*
Google Chrome 49.0.262 Google Chrome 49.0.262
Windows XP Windows XP

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

Сообщение Разместил Александр Лешванов 05 янв 2018, 13:40

4. И после всех натуральных js кодов располагаем по порядку ниже (не зависимо) такие -
Код: выделить все
<script src="{T_SUPER_TEMPLATE_PATH}/tooltip.js"></script>

Аватар пользователя
Александр Лешванов
(можно Николаич)
(можно Николаич) 
*
Google Chrome 49.0.262 Google Chrome 49.0.262
Windows XP Windows XP

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

Сообщение Разместил Александр Лешванов 05 янв 2018, 13:42

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.Чуть позже залезем в него еще.

Аватар пользователя
Александр Лешванов
(можно Николаич)
(можно Николаич) 
*
Google Chrome 49.0.262 Google Chrome 49.0.262
Windows XP Windows XP
Следующая страница

Вернуться в Вопросы и проблемы движка phpBB до версии 3.0.14



 • Блок вывода аналогичных по названию других тем нашего форума • 

HTML5 Validated Счетчик ИКС Яндекс.Метрика
cron