Je crée une application avec PHP; Joomla 3, Nooku et MySql Database, et j'interagis avec la base de données pour obtenir les données d'une table. J'ai plus de 64400 lignes sur 5 colonnes, mais le Le problème est que la page nécessite plus de 6 minutes de chargement, en particulier les fonctions JS: /
Aidez-moi, s'il vous plaît
La raison pour laquelle votre page est lente est que vous essayez de charger toutes les données ou une grande partie de celles-ci en même temps, ou parce que votre requête n'est pas optimisée correctement en raison d'index manquants. Difficile à dire sans plus d'infos.
Si la requête est optimisée, vous devez vous assurer de paginer le chargement de vos données en LIMIT
'votre requête et les résultats obtenus.
Nooku Framework est une solution prête à l'emploi qui vous évite de charger plus de 100 lignes à la fois. Vous n'avez rien de plus à faire pour que cela fonctionne. En utilisant une configuration correcte de contrôleur/modèle/vue, la pagination des données fonctionne immédiatement dans Nooku en ajoutant les paramètres limit
et offset
à la requête URL.
Nooku Framework utilise
offset
prêt à l'emploi, mais prend également en chargelimitstart
, qui est l'équivalent de Joomla.
Un bon exemple pour démarrer avec une configuration correcte est le tutoriel de démarrage qui vous explique comment créer une simple extension Todo pour Joomla.
Il est facile de sélectionner uniquement les lignes pertinentes, à condition que le composant ait été correctement intégré dans le CMS Joomla. La première chose à faire est de confirmer que vous demandez et que vous stockez l'objet JPagination à partir de votre classe de vue:
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);
}
Ici, vous récupérez essentiellement l’objet de pagination à utiliser dans l’affichage. Dans le fichier default.php, vous ajouteriez ce qui suit à votre
<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>
Puis, dans le pied de table, ajoutez la navigation de pagination comme suit:
<tfoot>
<tr>
<td colspan="11">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
En utilisant correctement le cadre, tout le gros du travail est déjà absorbé loin de vous.