web-dev-qa-db-fra.com

Comment utiliser la technique de contournement de cache intégrée de Joomla pour les scripts et les feuilles de style?

JHtml :: script et JHtml :: stylesheet ont une technique de contournement du cache qui ne semble pas être clairement documentée. Comment puis-je l'utiliser?

4
Flimm

Oui, il existe une technique de contournement du cache intégrée. Si vous l'utilisez, votre code HTML ressemblera à ceci:

<script src="/media/path/foo/bar.js?32af2f62db6e60053132340acc9dfb3c" type="text/javascript"></script>

Comment fonctionne la technique de contournement de cache:

Cela fonctionne en ajoutant une série de caractères différente dans la section de requête d'URL chaque fois que le fichier est modifié. De cette façon, le navigateur n'aura pas d'entrée en cache pour cette URL jamais vue auparavant et devra la récupérer à nouveau. Joomla et votre serveur sont déjà configurés pour ignorer la partie requête de l'URL lorsqu'il s'agit de servir des fichiers statiques.

Comment l'implémenter:

Voici comment l'utiliser:

JHtml::_("script", "path/foo/bar.js");

Ou:

JHtml::_("stylesheet", "path/foo/bar.css");

(Notez que si vous utilisez addStyleSheet et addScript pour que pas fonctionne, vous devez utiliser JHtml::script et JHtml::stylesheet au lieu.)

Ensuite, assurez-vous que le répertoire qui contient le fichier (path/foo) contient un fichier nommé MD5SUM _ (pasMD5SUMS). Ce fichier contiendra les caractères qui seront ajoutés à l'URL avec un ?. Il ne doit pas s'agir d'une somme de contrôle MD5SUM, cela pourrait être n'importe quoi, mais l'intention est qu'elle contienne une somme de contrôle des fichiers de ce répertoire. Malheureusement, il n’ya aucun moyen d’avoir une somme de contrôle distincte pour chaque fichier de ce répertoire. Si vous souhaitez que le contournement du cache fonctionne avec cette technique, la somme de contrôle doit être modifiée pour tous les fichiers de ce répertoire.

Voici comment le créer sous Linux sur la ligne de commande, vous devriez probablement ajouter quelque chose comme ceci dans votre script de construction si vous en avez un:

cd path/foo
find . -maxdepth 1 -type f -not -name MD5SUM -exec md5sum "{}" ";" | sort | md5sum  > MD5SUM

Cela crée la somme de contrôle MD5SUM de chaque fichier de ce répertoire (à l’exception de MD5SUM pour éviter une boucle de contre-réaction), puis MD5SUM reproduit l’ensemble de cette sortie dans un fichier final MD5SUM fichier.

(Par défaut, la commande md5sum inclut les noms de fichiers et les nouvelles lignes, mais cela devrait quand même fonctionner.

4
Flimm