it-swarm.com.de

Ladezeit ist in Joomla langsam PHP

Ich erstelle eine Anwendung mit PHP; Joomla 3, Nooku und MySql Database, und ich interagiere mit der Datenbank, um Daten aus einer Tabelle zu erhalten, ich bekomme über 64400 Zeilen in 5 Spalten, aber die Problem ist, dass die Seite mehr als 6 Minuten zum Laden bekommt, insbesondere JS-Funktionen: /

Hilfe bitte

1
user4147

Der Grund dafür, dass Ihre Seite langsam ist, liegt darin, dass Sie versuchen, alle oder viele Daten auf einmal zu laden, oder dass Ihre Abfrage aufgrund fehlender Indizes nicht richtig optimiert wurde. Schwer zu sagen ohne mehr Infos.

Wenn die Abfrage optimiert ist, müssen Sie sicherstellen, dass das Laden Ihrer Daten paginiert wird, indem Sie LIMIT in Ihre Abfrage und die resultierende Ergebnismenge einfügen.

Nooku Framework übernimmt dies für Sie und verhindert, dass Sie mehr als 100 Zeilen gleichzeitig laden. Sie müssen nichts extra tun, damit dies funktioniert. Bei Verwendung eines korrekten Controller-/Modell-/Ansichts-Setups funktioniert die Paginierung der Daten in Nooku sofort, wenn der URL-Abfrage die Parameter limit und offset hinzugefügt werden.

Nooku Framework verwendet standardmäßig offset, unterstützt jedoch auch limitstart, das entspricht Joomla.

Ein gutes Beispiel für den Einstieg in ein korrektes Setup-Nooku ist das Lernprogramm für den Einstieg , mit dem Sie eine einfache Todo-Erweiterung für Joomla erstellen.

3
Johan Janssens

Es ist einfach, nur die relevanten Zeilen auszuwählen, vorausgesetzt, die Komponente wurde ordnungsgemäß in das Joomla CMS integriert. Als Erstes müssen Sie bestätigen, dass Sie das JPagination-Objekt von Ihrer Ansichtsklasse anfordern und speichern:

public function display($tpl = null)
{
    $this->items        = $this->get('Items');
    $this->pagination   = $this->get('Pagination'); <-- IMPORTANT
    $this->state        = $this->get('State');

    NewsfeedsHelper::addSubmenu('newsfeeds');

    // Check for errors.
    if (count($errors = $this->get('Errors')))
    {
        JError::raiseError(500, implode("\n", $errors));
        return false;
    }

    $this->addToolbar();
    $this->sidebar = JHtmlSidebar::render();
    parent::display($tpl);
}

Hier rufen Sie im Grunde das Paginierungsobjekt ab, das in der Anzeige verwendet werden soll. In der Datei default.php würden Sie Folgendes zu Ihrer hinzufügen

<div class="btn-group pull-right hidden-phone">
    <label for="limit" class="element-invisible">
        <?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?>
    </label>
    <?php echo $this->pagination->getLimitBox(); ?>
</div>

Fügen Sie dann in Ihrer Fußzeile die Paginierungsnavigation wie folgt hinzu:

<tfoot>
    <tr>
        <td colspan="11">
            <?php echo $this->pagination->getListFooter(); ?>
        </td>
    </tr>
</tfoot>

Durch die ordnungsgemäße Nutzung des Frameworks wird das gesamte schwere Heben bereits von Ihnen abstrahiert.

1
Brian Bolli