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?
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>
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.
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.