Příručka:LinkBatch.php
| Soubor MediaWiki: includes/Page/LinkBatch.php | |
|---|---|
| Zdrojový kód: | master • 1.46.0 • 1.45.4 • 1.43.9 |
| Třídy: | MediaWiki\Cache\LinkBatch |
Popis
Když MediaWiki vykresluje stránku, musí projít všechny odkazy na stránce, aby zjistila, zda skutečně existují. Pokud neexistují, je k tagu kotvy přidána "nová" třída, aby se zobrazila jako červený odkaz. Pokud stránka obsahuje mnoho odkazů, může to být náročný proces, který zpomaluje vykreslování stránky. Pro odstranění tohoto problému byla vytvořena třída LinkCache. Objekt LinkCache ukládá informace v mezipaměti o všech stránkách odkazovaných z jednoho zdroje (obvykle ze stránky). Generování samotné LinkCache je však stále náročné, pokud se na každou odkazovanou stránku dotazuje samostatně. Pro obejití tohoto problému lze použít třídu LinkBatch. Třída LinkBatch umožňuje přidat všechny stránky do dávkového dotazu, takže je nutné pouze jedno volání databáze.
Použití
Chcete-li pro svou stránku použít LinkBatch, nejprve vytvořte instanci nového objektu LinkBatch:
$batch = $this->linkBatchFactory->newLinkBatch();
To předpokládá, že použijete hodnotu Dependency Injection a že hodnota LinkBatchFactory byla vložena do třídy.
Pak byste se měli zaregistrovat jako volající funkce LinkBatch, aby bylo možné databázový dotaz vysledovat zpět k vám:
$batch->setCaller( __METHOD__ );
Pak do dávky přidejte každou propojenou stránku. Existují dva způsoby, jak to udělat: Pomocí objektu LinkTarget odkazované stránky nebo pomocí jmenného prostoru a řetězce názvu odkazované stránky.
Použití objektu LinkTarget:
$batch->addObj( $linkTarget );
Použití jmenného prostoru a řetězce názvu:
$batch->add( $namespace, $title );
Jakmile jsou všechny propojené stránky přidány do dávky, použijte funkci execute k vygenerování a uložení LinkCache:
$batch->execute();
Pokud předem víte, že odkazy, které vytváříte, určitě existují, můžete jejich kontrole existence zabránit pomocí funkce LinkRenderer::makeKnownLink(). Díky tomu odpadá potřeba LinkCache.