Celková optimalizace stránky
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jarek159
- Člen | 23
Zdravím,
vytvořil jsem rozsáhlí systém, stránky se bohužel načítají až
3 sekundy a celkově jsou velice pomalé. Proto bych byl rád, kdybyste mi
poradili jak stránku optimalizovat.
Začnu výpisem novinek:
public function renderDefault()
{
$qb = $this->EntityManager->createQueryBuilder();
$qb->select($qb->expr()->count('u'))
->from('App\News', 'u');
$query = $qb->getQuery();
$count = $query->getSingleScalarResult();
$visualPaginator = $this['visualPaginator'];
$paginator = $visualPaginator->getPaginator();
$paginator->setItemCount($count);
$paginator->setItemsPerPage(4);
$qb = $this->EntityManager->createQueryBuilder();
$qb->select('u')
->from('App\News', 'u')
->setFirstResult($paginator->getOffset())
->setMaxResults($paginator->getLength())
->orderBy('u.date', 'DESC');
$query = $qb->getQuery();
$this->template->news = $query->getResult();
}
Template:
{foreach $news as $new}
<div class="new">
<div class="col-lg-3 col-md-2 col-sm-3 img hidden-xs">
<img src="{$basePath}/news/{$new->id}.png" class="img-responsive" alt="{$new->title}">
</div>
<div class="col-lg-9 col-md-10 col-sm-9 content">
<div class="title">
<span><a n:href="Novinka: id=>$new->id, title=>$template->webalize($new->title)">{$new->title}</a></span>
<span class="hidden-xs">
<span><a n:href="Hrac: name=>$presenter->userById($new->author)">{? $presenter->prefix($presenter->userById($new->author)); }</a></span>
<span>{$new->date|date:'%d.%m.%Y'}</span>
<a n:href="Novinka: id=>$new->id, title=>$template->webalize($new->title)">Čti více</a>
</span>
</div>
<p class="text">
{$new->text}
</p>
</div>
</div>
{/foreach}
A metody, které volám:
public function userById($id, $echo = false) {
$qb = $this->EntityManager->createQueryBuilder();
$qb->select('u.name')
->from('App\Inqplayers', 'u')
->where('u.id = ?1')
->setParameter(1, $id)
->setMaxResults(1);
$query = $qb->getQuery();
$name = $query->getOneOrNullResult();
if ($echo) {
echo $name["name"];
}
return $name["name"];
}
public function prefix($player, $name = true) {
$qb = $this->EntityManager->createQueryBuilder();
$qb->select('u.groups')
->from('App\Inqplayers', 'u')
->where('u.name = ?1')
->setParameter(1, $player)
->setMaxResults(1);
$query = $qb->getQuery();
$group = $query->getOneOrNullResult();
if (is_array($group)) {
$group = explode('"', $group["groups"]);
$group = $group[1];
}
else {
$group = "default";
}
$qb = $this->EntityManager->createQueryBuilder();
$qb->select('u.value')
->from('App\Permissions', 'u')
->where("u.name = ?1 AND u.permission = 'prefix'")
->setParameter(1, $group)
->setMaxResults(1);
$query = $qb->getQuery();
$prefix = $query->getOneOrNullResult();
$prefix = $prefix["value"];
if ($name) {
$prefix .= $player;
}
echo MinecraftColors::convertToHTML($prefix);
}
- Jan Tvrdík
- Nette guru | 2595
Nemá cenu tu moc spekulovat, pusť si Xdebug nebo Blackfire profiler. Máš Linux nebo Windows? Verze PHP? Zapnutá nebo vypnutá opcode cache?