htaccess vs modifications site, quelle stratégie ? Merci

Discussion dans 'URL Rewriting et .htaccess' créé par underthenet, 10 Mars 2022.

  1. underthenet
    underthenet Nouveau WRInaute
    Inscrit:
    29 Février 2008
    Messages:
    13
    J'aime reçus:
    1
    Bonjour à toutes et à tous,

    J'ai un petit portfolio fait à la main avec Bootstrap hébergé sur une offre perso OVH.
    Habituellement, je ne le modifie pas souvent et je l'optimise pour pagespeed avec un htaccess comme ci-dessous.
    En ce moment j'ai besoin de le modifier plus souvent (html, css, images...) et donc mes visiteurs qui reviennent, ne voient pas les modifications, conformément aux consignes de mon htaccess.

    Alors, quelle est la stratégie à adopter ?
    Remplacer temporairement 1 year par 1 hour et max-age-311104000 par max-age-3600 ?
    Supprimer le htaccess ?
    Laisser la solution en place combien de temps ?

    Je dois dire que je me suis souvent poser la question, j'ai souvent cherché des réponses, sans succès.
    Merci de votre aide.
    Code:
    <IfModule mod_expires.c>
       ExpiresActive On
       ExpiresDefault "access plus 1 year"
       ExpiresByType image/jpg "access plus 1 year"
       ExpiresByType image/jpeg "access plus 1 year"
       ExpiresByType image/png "access plus 1 year"
       AddType image/x-icon .ico
       ExpiresByType image/ico "access plus 1 year"
       ExpiresByType image/icon "access plus 1 year"
       ExpiresByType image/x-icon "access plus 1 year"
       ExpiresByType text/css "access plus 1 year"
       ExpiresByType text/javascript "access plus 1 year"
       ExpiresByType text/html "access plus 1 year"
       ExpiresByType application/javascript "access plus 1 year"
       ExpiresByType application/x-javascript "access plus 1 year"
       ExpiresByType video/ogv "access plus 1 year"
       ExpiresByType video/mp4 "access plus 1 year"
       ExpiresByType video/webm "access plus 1 year"
    </IfModule>
    
    <IfModule mod_headers.c>
       <FilesMatch "\\.(ico|jpe?g|png|ttf|eot|woff|woff2)$">
          Header set Cache-Control "max-age=311104000, public"
       </FilesMatch>
       <FilesMatch "\\.(css)$">
          Header set Cache-Control "max-age=311104000, public"
       </FilesMatch>
       <FilesMatch "\\.(html|htm)$">
          Header set Cache-Control "max-age=311104000, public"
       </FilesMatch>
       <FilesMatch "\\.(js)$">
          Header set Cache-Control "max-age=311104000, private"
       </FilesMatch>
    </IfModule>
    
     
  2. colonies
    colonies WRInaute impliqué
    Inscrit:
    10 Septembre 2006
    Messages:
    671
    J'aime reçus:
    110
    Il faut ajouter un identifiant de version à chacune de tes ressources. Si tu le passe en query string, ça forcera le rechargement sans pour autant provoquer un comportement inattendu.
    Par exemple :
    Code:
    <link rel="stylesheet" href="/mes_styles.css?v1">
    Le fichier chargé sera bien mes_styles.css, mais en changeant ce qu'il y a derrière le ?, le navigateur devra recharger le fichier.
    L'idéal est d'avoir un système pour mettre à jour automatiquement ce qu'il y a derrière le ?, par exemple, si tu as PHP, en ajoutant le timestamp de la dernière modification du fichier :
    Code:
    <link rel="stylesheet" href="/mes_styles.css?<?= filemtime('/chemin/complet/vers/mes_styles.css') ?>">
     
  3. underthenet
    underthenet Nouveau WRInaute
    Inscrit:
    29 Février 2008
    Messages:
    13
    J'aime reçus:
    1
    Bonjour à tous, merci Colonies
    Il faut que je précise que je ne suis pas un dev, mais juste chef de projet fonctionnel.
    Si je comprends bien, il suffirait que j'ajoute, dans mon fichier index.html et que je renomme en index.php, la ligne :
    Code:
    <link rel="stylesheet" href="/mes_styles.css?<?= filemtime('/chemin/complet/vers/mes_styles.css') ?>">
    pour que les consignes du htaccess soient outrepassées ?
    Et pour une image je peux faire ça :
    Code:
    <img src="images/fichier.png<?= filemtime('/chemin/complet/vers/fichier.png ')" /> 
    Merci encore.
     
  4. colonies
    colonies WRInaute impliqué
    Inscrit:
    10 Septembre 2006
    Messages:
    671
    J'aime reçus:
    110
    En fait ça n'outrepasse rien. Une adresse avec un paramètre qui change doit être rechargée, le navigateur ne peut rien déduire de la partie avant le(s) paramètre(s) d'URL, que ce soit un fichier .css, .js ou .png, ça n'a pas d'importance. Ce sont des extensions qui correspondent généralement à des fichiers statiques, mais le navigateur n'en a aucune garantie puisqu'on peut réécrire les URL, et leur contenu pourrait donc changer en fonction du paramètre derrière le ? de l'URL.

    Dans ton cas, le paramètre ne sert à rien en lui-même, mais le fait qu'il change forcera le navigateur à télécharger la nouvelle version du fichier (et il sera servi par le cache pendant 1 an si l'utilisateur revient, dans ton cas, tant que le paramètre ne change pas).
     
  5. underthenet
    underthenet Nouveau WRInaute
    Inscrit:
    29 Février 2008
    Messages:
    13
    J'aime reçus:
    1
    Merci Colonies
    Ok, je comprends mieux, et en effet quand je regarde dans le cache de firefox j'ai bien monstyle.css?
    Mais du coup comment je pourrais faire pour le fichier index.php lui-même ?
    Merci encore de ta patience.
     
  6. colonies
    colonies WRInaute impliqué
    Inscrit:
    10 Septembre 2006
    Messages:
    671
    J'aime reçus:
    110
    Ton index.php doit envoyer des headers au navigateur pour indiquer qu'il ne doit pas être mis en cache. Il faut mettre, en début de fichier :
    Code:
    <?php
    header("Expires: -1");
    header("Cache-Control: private, no-cache");
    ?>
    Note : tu as bien quelque chose derrière le point d'interrogation de "monstyle.css?" ?
    Tu devrais avoir un nombre, par exemple : monstyle.css?1647110265
    Tiens, voilà une fonction qui renvoie l'url avec le timestamp de dernière modification du fichier :
    Code:
    function urlts(string $path): string {
       return "$path?" . filemtime($_SERVER['DOCUMENT_ROOT'] . $path);
    }
    
    Exemples d'appel :
    Code:
    <link rel="stylesheet" href="<?= urlts('/css/mon_style.css') ?>">
    <script src="<?= urlts('/js/mon_js.js') ?>"></script>
    
     
Chargement...
Similar Threads - htaccess modifications stratégie Forum Date
Redirection 404 via le .htaccess / pb avec les liens relatifs Débuter en référencement 5 Mai 2022
WordPress Petit souci de redirection htaccess URL Rewriting et .htaccess 3 Mai 2022
Redirection url htaccess Développement d'un site Web ou d'une appli mobile 14 Janvier 2022
Priorité entre le serveur et le fichier Htaccess URL Rewriting et .htaccess 4 Janvier 2022
importance de l'ordre des instructions dans un fichier htaccess URL Rewriting et .htaccess 3 Janvier 2022
Variables SetEnv dans un fichier htaccess URL Rewriting et .htaccess 25 Décembre 2021
htaccess qui fonctionne partout sauf sur 1 seul PC URL Rewriting et .htaccess 28 Juillet 2021
modification fichier htaccess URL Rewriting et .htaccess 25 Juillet 2021
Protection de site web : quel code ajouter dans htaccess ? URL Rewriting et .htaccess 5 Mars 2021
Blocage d'un visiteur via le fichier .htaccess URL Rewriting et .htaccess 5 Janvier 2021
sécurité avec htaccess URL Rewriting et .htaccess 18 Décembre 2020
Récriture .htaccess (sous-domaine + répertoire) URL Rewriting et .htaccess 11 Août 2020
Le htaccess de WordPress réécrit une URL qui n'est pas censé être réécrite Administration d'un site Web 17 Juin 2020
Problème htaccess Développement d'un site Web ou d'une appli mobile 26 Mai 2020
Redirection dans .htaccess Développement d'un site Web ou d'une appli mobile 11 Mai 2020
htaccess ou noindex Netlinking, backlinks, liens et redirections 23 Janvier 2020
caractères spéciaux dans le Htaccess! Problèmes de référencement spécifiques à vos sites 17 Décembre 2019
Redirection htaccess vers 404 Netlinking, backlinks, liens et redirections 2 Décembre 2019
Redirection url et url mobile htaccess Netlinking, backlinks, liens et redirections 1 Décembre 2019
.htaccess avec variables ? Netlinking, backlinks, liens et redirections 11 Novembre 2019