Новости 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 Гость просматривают эту тему.
  • 6 Ответов
  • 3804 Просмотров
*

cheroky

  • Осваиваюсь на форуме
  • 38
  • 0 / 2
Как устранить конфликт JS?
« : 31.01.2013, 23:13:48 »
Привет всем, помогите решить проблему поствил на сайт модуль Xpert Captions и вывел через него некоторый контент, и я хочу поставить еше вкладки но уже не для вывода контента а для другйо цели, но когда я подключил скрипт то перестает работать  Xpert Captions ,

что нужно поменять чтоб не было конфликта

вот код который я хочу подключить
Код
<script type="text/javascript">
$(document).ready(function(){

var first = 0;
var speed = 900;
var pause = 4500;

function removeFirst(){
first = $('ul#listticker li:first').html();
$('ul#listticker li:first')
.animate({opacity: 0}, speed)
.fadeOut('slow', function() {$(this).remove();});
addLast(first);
}

function addLast(first){
last = '<li style="display:none">'+first+'</li>';
$('ul#listticker').append(last)
$('ul#listticker li:last')
.animate({opacity: 1}, speed)
.fadeIn('slow')
}

interval = setInterval(removeFirst, pause);
});
</script>

код  Xpert Captions

Код
(function($){

    if(!$.omr){
        $.omr = new Object();
    };
   
    $.XpertCaptions = function(el, options){
   
        var base = this;
       
        // Access to jQuery and DOM versions of element
        base.$el = $(el);
        base.el = el;
       
        // Add a reverse reference to the DOM object
        base.$el.data("XpertCaptions", base);
       
        base.init = function(){
            base.options = $.extend({},$.XpertCaptions.defaultOptions, options);
           
            base.load_box();
        };
       
        // Preload Images
        base.load_box = function(){
        // Hide until window loaded, then fade in
if (base.options.preload){
$(base.options.backdrop, base.el).hide();
$(base.options.overlay, base.el).hide();

$(window).load(function(){
// IE transparency fade fix
if(base.options.options.animation == 'fade' && $(base.options.overlay, base.el).css('opacity') == 0 ) $(base.options.overlay, base.el).css('filter', 'alpha(opacity=0)');

$(base.options.overlay, base.el).fadeIn(200, function(){
$(base.options.backdrop, base.el).fadeIn(200);
});

base.allow_hover();
});
}else{
$(base.options.backdrop, base.el).show();
$(base.options.overlay , base.el).show();
base.allow_hover();
}
        };
       
        // Initialize hover animations
        base.allow_hover = function(){
        // Select animation
switch(base.options.animation){

// Handle fade animations
case 'fade':
$(base.el).hover(function () {
        $(base.options.overlay, base.el).stop().fadeTo(base.options.speed, base.options.opacity);
        },function () {
        $(base.options.overlay, base.el).stop().fadeTo(base.options.speed, 0);
      });
     
    break;
   
    // Handle slide animations
      case 'slide':
      // Grab default overlay x,y position
startX = $(base.options.overlay, base.el).css(base.options.anchor_x)!= 'auto' ? $(base.options.overlay, base.el).css(base.options.anchor_x) : '0px';
startY = $(base.options.overlay, base.el).css(base.options.anchor_y)!= 'auto' ? $(base.options.overlay, base.el).css(base.options.anchor_y) : '0px';;
     
      var hoverState = {};
      hoverState[base.options.anchor_x] = base.options.hover_x;
      hoverState[base.options.anchor_y] = base.options.hover_y;
     
      var endState = {};
      endState[base.options.anchor_x] = startX;
      endState[base.options.anchor_y] = startY;
     
$(base.el).hover(function () {
        $(base.options.overlay, base.el).stop().animate(hoverState, base.options.speed);
        },function () {
        $(base.options.overlay, base.el).stop().animate(endState, base.options.speed);
      });
     
      break;
};
        };
       
        // Make it go!
        base.init();
    };
   
    $.XpertCaptions.defaultOptions = {
        animation : 'fade',
        speed : 150,
        opacity : 1,
        preload : 0,
        anchor_x : 'left',
        anchor_y : 'bottom',
        hover_x : '0px',
        hover_y : '0px',
        overlay  : '.xc-overlay',
backdrop : '.xc-backdrop'
    };
   
    $.fn.xpertcaptions = function(options){
        return this.each(function(){
            (new $.XpertCaptions(this, options));
        });
    };
   
})(jQuery);
*

prometheus

  • Захожу иногда
  • 84
  • 7 / 0
Re: Как устранить конфликт JS?
« Ответ #1 : 01.02.2013, 13:07:21 »
В firebuge или в Chrome в консоли посмотри какие ошибки выдает скрипт.
*

Immortal_pony

  • Захожу иногда
  • 128
  • 7 / 2
Re: Как устранить конфликт JS?
« Ответ #2 : 01.02.2013, 22:11:18 »
http://jquery.page2page.ru/index.php5/Предупреждение_конфликтов
*

cheroky

  • Осваиваюсь на форуме
  • 38
  • 0 / 2
Re: Как устранить конфликт JS?
« Ответ #3 : 02.02.2013, 00:48:09 »
В firebuge или в Chrome в консоли посмотри какие ошибки выдает скрипт.

Код
8 tds.js:36
Uncaught TypeError: Object [object Object] has no method 'xpertcaptions' euro-line.info:61
Unsafe JavaScript attempt to access frame with URL http://googleads.g.doubleclick.net/pagead/html/r20130130/r20121214/zrt_lookup.html from frame with URL http://euro-line.info/#tabs-1. Domains, protocols and ports must match.
 contentscript_siteoverlay_bin.js:87
Unsafe JavaScript attempt to access frame with URL http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-764019362685470…&bih=775&oid=3&fu=0&ifi=1&dtd=317&xpc=OITgea1dGD&p=http%3A//euro-line.info from frame with URL http://euro-line.info/#tabs-1. Domains, protocols and ports must match.
 contentscript_siteoverlay_bin.js:87
2
Unsafe JavaScript attempt to access frame with URL http://nic.sourdi.com/s/883/441976.html?b=441976&x=1&y=1&s=4&c=djMub2MczgFR…17xlqIwXVVNkTxtugUHcMu9jUE&sh=api2.modelatos.com&ref=&h=luisardo.com&66618 from frame with URL http://euro-line.info/#tabs-1. Domains, protocols and ports must match.
 contentscript_siteoverlay_bin.js:87

вот ошибки, и как их решить:(
*

Immortal_pony

  • Захожу иногда
  • 128
  • 7 / 2
Re: Как устранить конфликт JS?
« Ответ #4 : 02.02.2013, 01:24:53 »
Библиотека jquery конфликтует с библиотекой mootools. Решение по ссылке выше.
*

cheroky

  • Осваиваюсь на форуме
  • 38
  • 0 / 2
Re: Как устранить конфликт JS?
« Ответ #5 : 02.02.2013, 01:35:15 »
Библиотека jquery конфликтует с библиотекой mootools. Решение по ссылке выше.

спс за ссылку буду пробовать свои извилины напрягать и разбираться в той статье:)
*

cheroky

  • Осваиваюсь на форуме
  • 38
  • 0 / 2
Re: Как устранить конфликт JS?
« Ответ #6 : 02.02.2013, 02:07:55 »
Библиотека jquery конфликтует с библиотекой mootools. Решение по ссылке выше.

Мужик спс помог, сделал по той статье и все решилось:)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Конфликт MooTools и Yandex.share. jQuery.noConflict() не помогает

Автор grover268

Ответов: 0
Просмотров: 1366
Последний ответ 07.04.2016, 10:38:37
от grover268
Конфликт Jquery и Mootools

Автор Bangoo

Ответов: 6
Просмотров: 13292
Последний ответ 04.04.2013, 13:14:51
от mark1