Définir la date d'expiration d'une image

Galak -  
avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'essaie actuellement d'optimiser le temps de chargement des pages de mon site. J'utilise Yslow et Page Speed. Ces deux applications me suggèrent de définir une date d'expiration pour les images (notamment).

J'ai cherché sur le web, mais je n'ai pas trouvé de tuto clair et simple pour faire ce que je veux.

J'ai ajouté les lignes suivantes dans mon fichier .htaccess:
ExpiresActive On
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"

Mais ça m'a renvoyé une erreur 500 (mon site est sur Free).

Je voudrais savoir s'il est possible de définir la date d'expiration de toutes les images en modifiant seulement le .htaccess, ou s'il faut modifier les entêtes de chaque page html.

Merci de vos réponses,
Galak
Configuration: Windows XP
Firefox 3.5.5

7 réponses

  1. arthezius Messages postés 3756 Statut Membre 475
     
    Je crois que Free ne gère pas le htaccess. A confirmer toutefois.
    0
  2. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Si, mais avec beaucoup de paramètres propres à eux.
    Je déteste ce genre d'hébergeur (comme 1&1 avec leur register_globals)
    0
    1. arthezius Messages postés 3756 Statut Membre 475
       
      Je suis chez 1and1.
      Tu fais comment pour le désactiver dans ce cas?
      J'étais chez lws avant mais pour l'url rewriting était utilisable seulement avec un truc a eu.
      J'avais changé pour cette raison.

      Enfin bref dans tout les cas, je sais pas comment faire pour le htaccess avec eux.
      0
    2. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511 > arthezius Messages postés 3756 Statut Membre
       
      Pour désactiver quoi ? Les register_globals ?
      Il suffit de passer la version de PHP en 5 (par défaut, c'est PHP4).
      Ajoute cette ligne dans le .htaccess :
      AddType x-mapp-php5 .php

      Si tu veux rester sur PHP4, alors crées un php.ini contenant ceci :
      register_globals = Off
      Et par la même occasion, désactive les magic_quotes en ajoutant cette ligne dans le php.ini (crée-le si tu as pris la première solution pour les register_globals) :
      magic_quotes_gpc off
      0
    3. arthezius Messages postés 3756 Statut Membre 475 > avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Tu en fais quoi du fichier php.ini après ?
      J'en ai fais un que j'ai mis avec mon .htaccess mais ça ne fait rien...
      Je suis juste censé mettre la ligne :
      magic_quotes_gpc off

      Ou y'a t-il autre chose a faire ?
      0
    4. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511 > arthezius Messages postés 3756 Statut Membre
       
      Le php.ini est à mettre dans chaque répertoire dans lequel tu veux appliquer les changements (cf. ça).

      Voici le contenu du php.ini :
      magic_quotes_gpc = off
      register_globals = off
      Et la ligne à mettre dans le .htaccess pour avoir PHP5 :
      AddType x-mapp-php5 .php
      0
    5. arthezius Messages postés 3756 Statut Membre 475 > avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention  
       
      J'ai changé ce que tu m'a dis.
      Le phpinfo ici et le PHP.ini ici (on remarque au passage dans le php info qu'il est a priori pris en compte mais le magic_quotes_gpc est sur on dans le phpinfo.
      0
  3. Galak
     
    Merci pour vos réponses, mais ça ne marche pas.

    @arthezius Free accèpte le .htaccess, du moins pour les redirections et la personnalisation de la page 404, vu que ça marche sur mon site.

    @avion-f16 j'avais déjà essayé le code provenant de ce site et rien n'y change, j'obtiens toujours l'erreur 500.

    Est-ce que quelqu'un à déjà eu ce problème? Est-ce qu'il suffit de changer le .htaccess ou faut-il rajouter du code également dans le html?

    Merci,
    Galak
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. nodapio Messages postés 672 Date d'inscription   Statut Membre Dernière intervention   79
     
    dsl de remonter le post mais, toujours pas de solution ?
    0
  6. Galak
     
    @ nodapio, le seul truc que j'ai trouvé c'est d'utiliser du php.

    Dans ma page qui contient l'image
    - <img src="image.php">

    Contenu du fichier image.php
    <?php
    header("expires: Thu, 15 Apr 2010 20:00:00 GMT");
    header("Content-type: image/jpg");
    readfile("image.jpg");
    ?>

    Donc en gros pour chaque image j'ai du créer un fichier php ce qui est un peu lourd. Et j'ai pas franchement vu de différence dans le temps de chargement.

    Si quelqu'un a une autre solution (avec htaccess) je suis toujour preneur.

    Galak
    0
  7. nodapio Messages postés 672 Date d'inscription   Statut Membre Dernière intervention   79
     
    Ok, merci.
    Non, tampis je vais rester à la bonne vieille méthode...
    On pourrait peut-être faire un script qui automatise la création du fichier .php mais non puisque free n'accepte pas le chmod ! ptin !!!
    0
    1. tchouye
       
      Bonjour,

      En m'inspirant de la réponse, voici un fichier php (cacheImage.php) qui cache tous les formats d'images

      <?php
      header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 864000));

      header("Content-type: image/".pathinfo($_GET['file'],PATHINFO_EXTENSION));
      readfile($_GET['file']);
      ?>

      Un exemple d'appel :
      background-image: url('cacheImage.php?file=images/sprite3.png') ;
      0
    2. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
       
      Attention à la sécurité avec le script proposé ci-dessus : il permet l'affichage des fichiers PHP de votre site sans les exécuter => vol des informations d'accès à la base de données, facilité pour trouver les failles puisque accès aux sources, etc.
      0