Новости Joomla

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

👩‍💻 Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях. На старте его сайт на Joomla 3 вообще не смог обновиться на Joomla 5. Пришлось делать экспорт/импорт материалов. Проделав всё это он запустил-таки этот объём данных на Joomla 5. Тестовый скрипт грузил 200 материалов из этого объёма всего за 94 секунды ))) А главная страница с категориями грузилась 20 секунд. Добавив индекс для таблицы #__content

CREATE INDEX idx_catid_state ON #__content (catid, state);
он сократил время загрузки категорий до 1 секунды. Затем наш герой решил поковырять SQL-запрос в ArticleModel, который отвечает за выборку материалов. И решил заменить тип JOIN на STRAIGHT_JOIN для категорий.
// ->from($db->quoteName('#__content', 'a'))->from(    $db->quoteName('#__content', 'a')    . ' STRAIGHT_JOIN ' . $db->quoteName('#__categories', 'c')    . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))// ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))
Что сократило загрузку 200 материалов из 150к с 94 секунд до 5. К слову сказать, боевой сайт на Joomla 3 крутится на 12CPU 64GB рамы. А все манипуляции с кодом он делает на базовом 1CPU 1GB сервере и замеры скорости даны именно для базового сервера. Но это всё в дискуссии, хотя в идеале должно вылиться в Pull Requests. Мы - Open Source сообщество, где никто никому ничего не должен. Джунгли. Но человек ищет пути оптимизации Joomla и предлагает решения. Если оказать поддержку и предложить помощь хотя бы с тестированием самых разнообразных сценариев, то возможно эти улучшения смогут войти в ядро. Пусть не быстро, пусть через несколько лет, пусть не все, но войдут. Достаточно предложить руку помощи и приложить немного усилий.
Дискуссию на GitHub можно почитать здесь.@joomlafeed#joomla #community #php

0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 1922 Просмотров
*

dabrowski

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
Добрый день, руководство поставило задачу разместить на сайте в отдельной вкладке калькулятор "Определение фокусного расстояния объектива по полю зрения". Понимаю, что решается эта задача с помощью скрипта и разметки, но не совсем понимаю как это реализовать. Будет ли работать этот калькулятор если его разместить в новом материале? http://www.security-bridge.com/shkola_bezopasnosti/raschety_online/opredelenie_fokusnogo_rasstoyaniya_obektiva_po_polyu_zreniya/- это наглядный пример такого калькулятора. Помогите разобраться как его реализовать в Joomla. Заранее спасибо.
*

Session152

  • Захожу иногда
  • 50
  • 3 / 0
Re: Реализация "калькулятора" на сайте
« Ответ #1 : 27.02.2014, 10:22:03 »
да, можно .. javascript + разметка html+css
вот исходни одного из калькуляторов, можно в принципе доработать до Вашей.

Код
<script type="text/javascript">// <![CDATA[
function calc()
{
a0 = parseInt(document.getElementById('cn1').value);
a1 = kopaem();
a6 = parseInt(document.getElementById('cn6').value);
total = a1 + a6;
document.getElementById('totalprice').innerHTML = total + ' руб.';

}



function kopaem()
{
if (a0 == 0) { return parseInt(0); }
if (a0 == 1) { return parseInt(4500); }
if (a0 == 2) { return parseInt(9000); }
if (a0 == 3) { return parseInt(13500); }
if (a0 == 4) { return parseInt(18000); }
if (a0 == 5) { return parseInt(22500); }
if (a0 == 6) { return parseInt(27000); }
if (a0 == 7) { return parseInt(31500); }
if (a0 == 8) { return parseInt(36000); }
if (a0 == 9) { return parseInt(40500); }
if (a0 == 10) { return parseInt(45000); }
if (a0 == 11) { return parseInt(50000); }
if (a0 == 12) { return parseInt(55000); }
if (a0 == 13) { return parseInt(60000); }
if (a0 == 14) { return parseInt(65000); }
if (a0 == 15) { return parseInt(70000); }
if (a0 == 16) { return parseInt(75500); }
if (a0 == 17) { return parseInt(81000); }
if (a0 == 18) { return parseInt(86500); }
if (a0 == 19) { return parseInt(92000); }
if (a0 == 20) { return parseInt(97500); }
if (a0 == 21) { return parseInt(103500); }
if (a0 == 22) { return parseInt(109500); }
if (a0 == 23) { return parseInt(114000); }
if (a0 == 24) { return parseInt(119500); }
if (a0 == 25) { return parseInt(125000); }
else { return false; }
}
// ]]></script>
</p>
<table style="width: 100%;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">
<p><label style="font-size: 12px;" for="name" accesskey="n">Домик для колодца </label><br /><select id="cn6" name="D1" size="1" onchange="calc()">
<option value="0">Без домика</option>
<option value="7500">С домиком на колодец</option>
</select></p>
<p style="margin-top: 10px;"><label style="font-size: 12px;" for="kol" accesskey="e">Глубина колодца</label><br /><select id="cn1" name="D2" size="1" onchange="calc()">
<option value="0">Количество колец</option>
<option value="1">1 кольцо (0.9м.)</option>
<option value="2">2 кольца ( 1.8м.)</option>
<option value="3">3 кольца ( 1.7м.)</option>
<option value="4">4 кольца ( 3.6 м.)</option>
<option value="5">5 колец ( 4.5м.)</option>
<option value="6">6 колец ( 5.4м.)</option>
<option value="7">7 колец ( 6.3м.)</option>
<option value="8">8 колец ( 7.2м.)</option>
<option value="9">9 колец ( 8.1м.)</option>
<option value="10">10 колец ( 9.0м.)</option>
<option value="11">11 колец ( 9.9м.)</option>
<option value="12">12 колец ( 10.8м.)</option>
<option value="13">13 колец ( 11.7м.)</option>
<option value="14">14 колец ( 12.6м.)</option>
<option value="15">15 колец ( 13.5м.)</option>
<option value="16">16 колец ( 14.4м.)</option>
<option value="17">17 колец ( 15.3м.)</option>
<option value="18">18 колец ( 16.2м.)</option>
<option value="19">19 колец ( 17.1м.)</option>
<option value="20">20 колец ( 18.0м.)</option>
<option value="21">21 кольцо ( 18.9м.)</option>
<option value="22">22 кольца ( 19.8м.)</option>
<option value="23">23 кольца ( 20.7м.)</option>
<option value="24">24 кольца ( 21.6м.)</option>
<option value="25">25 колец ( 22.5м.)</option>
</select></p>
</td>
</tr>
<tr>
<td valign="top">
<p class="summ"><span style="font-size: 12px;">Примерная стоимость в рублях колодца "под ключ":</span></p>
<p class="summ2"><br /><span id="totalprice">0</span></p>
</td>
</tr>
</tbody>
</table></div>

Вставляете код на страничку (редактор поставить codeminor желательно). И видите простой калькуль.
Остаётся добавить пару полей ввода, добавить им условия и всё.
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: Реализация "калькулятора" на сайте
« Ответ #2 : 27.02.2014, 10:22:20 »
в *** легко уложимся
совет выше - в материале через редактор - моментально отрежет все скрипты))
надо или через шаблон править или через модуль вставлять, модуль кода php
« Последнее редактирование: 27.02.2014, 10:26:07 от verstalshik »
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Session152

  • Захожу иногда
  • 50
  • 3 / 0
Re: Реализация "калькулятора" на сайте
« Ответ #3 : 27.02.2014, 10:28:46 »
в *** легко уложимся
совет выше - в материале через редактор - моментально отрежет все скрипты))
надо или через шаблон править или через модуль вставлять, модуль кода php
1. В настройках редактора можно отключить вырезание.
2. если используется codemirror - он скрипты не режет
*

dabrowski

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
Re: Реализация "калькулятора" на сайте
« Ответ #4 : 27.02.2014, 10:37:28 »
Спасибо большое) Буду делать)))))
*

dabrowski

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
Re: Реализация "калькулятора" на сайте
« Ответ #5 : 27.02.2014, 11:07:19 »
Вот переделал, но накосячил походу сильно... в обычном браузере открывается но вычисления не осуществляются... подскажите что исправить нужно
<html>
<meta charset="utf-8" />
<script type="text/javascript">// <![CDATA[
function calc()
{
if (form.gorver.value = 'По горизонтали')
{
form.matrobj.options[1].value = "6,4";
form.matrobj.options[2].value = "4,8";
}
if (form.gorver.value = 'По вертикали')
{
form.matrobj.options[1].value = "4,8";
form.matrobj.options[2].value = "3,6";
}
r = 0;
m=eval(form.matrobj.value);
l=eval(form.rast.value);
w=eval(form.polez.value);
r = m*l/w;
form.result.value = r;
}
//-->
</script>
<table class="calc" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td>
<table width="550" cellspacing="0" cellpadding="0" border="0" align="center">
<tbody>
<tr>
<td width="200" style="padding-right: 10px;">Формат видеокамеры, дюйм:</td>
<td width="120" style="padding-left: 10px;">
<select name="VideoCamera" style="width: 100px;">
<option value="1" selected="selected">1</option>
<option value="2">2/3</option>
<option value="3">1/2</option>
<option value="4">1/3</option>
<option value="5">1/4</option>
</select>
</td>
</tr>
<tr>
<td style="padding-right: 10px;">Формат объектива, дюйм:</td>
<td style="padding-left: 10px;">
<select name="Objective" style="width: 100px;">
<option value="1" selected="selected">1</option>
<option value="2">2/3</option>
<option value="3">1/2</option>
<option value="4">1/3</option>
<option value="5">1/4</option>
</select>
</td>
</tr>
<tr>
<td style="padding-right: 10px;">Расстояние до объекта, м:</td>
<td style="padding-left: 10px;">
<input name="Distance">
</td>
</tr>
<tr>
<td style="padding-right: 10px;">Поле зрения равно, м:</td>
<td align="left" style="padding-left: 10px;">
<input name="FieldSight">
</td>
<td>
<select name="ViewType">
<option value="1" selected="selected">по горизонтали</option>
<option value="2">по вертикали</option>
</select>
</td>
</tr>
<tr>
<td colspan="3">
<em>Примечание. На видеокамеру  можно установить объектив, который будет иметь одинаковый или больший формат, относительно видеокамеры </em>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input class="ok" type="button" style="width: 38px;" onclick="submit_ajax();" value="Ok">
</td>
</tr>
</tbody>
</table>
<br>
Результат:                                   
<input type="text" name="result" size="3">
<br>
</form>
</html>
*

dabrowski

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
Re: Реализация "калькулятора" на сайте
« Ответ #6 : 27.02.2014, 13:34:08 »
понять не могу в чем беда
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: Реализация "калькулятора" на сайте
« Ответ #7 : 27.02.2014, 14:49:27 »
после </script>
это надо вставить<form id="ajax_form" enctype="application/x-www-form-urlencoded" method="post"><input name="calc" value="focus_pole" type="hidden" />
это если один в один как у тех, где решили своровать скрипт))))

думаю и дальше будете мучиться, т.к. простейшую ошибку не заметили - тег form не открыт был, уфф, ... ну это классика - жму деньги - трачу время

да и еще - тег боди отсутствует, странно..., а форма выводится? )))) тогда уж и теги HTML уберите чтоли
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

dabrowski

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
Re: Реализация "калькулятора" на сайте
« Ответ #8 : 27.02.2014, 15:05:33 »
Спасибо я понял))))
*

snipe2009

  • Осваиваюсь на форуме
  • 49
  • 3 / 0
  • То, что тебя не убивает, делает тебя сильнее...
Re: Реализация "калькулятора" на сайте
« Ответ #9 : 30.03.2014, 18:01:38 »
У меня почему то тоже не работает калькулятор на сайте, не могу понять в чем проблема? Может кто нить подскажет.
Заранее спасибо.
*

snipe2009

  • Осваиваюсь на форуме
  • 49
  • 3 / 0
  • То, что тебя не убивает, делает тебя сильнее...
Re: Реализация "калькулятора" на сайте
« Ответ #10 : 30.03.2014, 18:47:20 »
У меня почему то тоже не работает калькулятор на сайте, не могу понять в чем проблема? Может кто нить подскажет.
Заранее спасибо.
Решил вопрос!
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: Реализация "калькулятора" на сайте
« Ответ #11 : 18.06.2014, 16:45:57 »
Решил вопрос!
ну так делись!!))
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль калькулятора для расчета стекла

Автор LyalyaChornaya

Ответов: 9
Просмотров: 2516
Последний ответ 07.05.2014, 17:16:38
от LyalyaChornaya
Как проверить авторизацию админа на сайте через файл модели?

Автор Информатор

Ответов: 11
Просмотров: 4103
Последний ответ 30.09.2011, 15:54:01
от smart