IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

image blob stocké dans le cache du navigateur


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Par défaut image blob stocké dans le cache du navigateur
    Bonjour,
    Je vous explique mon problème :
    Je stocke des images en format BLOB dans une Base De Données, j'affiche ces images via un morceau de code :

    PAGE 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src='../private/getImage.php?id='numero'>
    Je vous fournit également le code de ma fonction GetImage.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    /** fichier permettant la recuperatin des images sur Mysql */
    include_once("bibliotheque.php");
    $id = $_GET['id'];
    $blob = executeRequete("SELECT imagemini FROM bibliothequeclient WHERE id='$id'");
    $image = mysqli_fetch_row($blob);
    $datas = $image[0];
    header("Content-type: image/jpeg");
    echo $datas;
    ?>
    Sur PAGE1, il y a enormement de formulaire à remplir, et j'analyse ceux-ci via des methodes POST, donc, je recharge enormement de fois la page, donc, j'appelle enormement de fois <img src='../private/getImage.php?id='numero'>. Mon problème est le suivant : a chaque appelle a getImage.php, je fais une requete sur la BDD pour recevoir le contenu de l'image.
    Sur les hébergement mutualisé, nous avons un traffic limité, donc, le download continu de ces images va faire gonfler le traffic de maniere artificielle.
    Sachant que je ne souhaite pas enregistrer mes images sur le serveur en dur (dans un repertoire sous format *.jpg, *.gif...), ya t'il moyen de creer une image associé a un ID que je stocke dans le cache du navigateur du client, et lors de chaque requete a Getimage, je teste la presence ou non de l'image dans le cache du navigateur?

    Merci d'avance pour vos réponses

  2. #2
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Cela ne me parait pas possible puisque tes images n'existent pas en tant que fichiers physiques mais sont virtuelles.

    Je me trompe peut-être, ou il y a une astuces que je ne connais pas. En tout cas si j'ai raison ce sera un argument de plus en faveur du stockage du chemin dans la BDD et du fichier sur le disque.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Par défaut
    Mouais, je reste sceptique quant au stokage des images en dur sur le disque.
    Bon même si je met un .htaccess interdisant l'acces a ce repertoire, est-ce sur a 100% ?

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Si tu protèges l'accès au répertoire d'images par un fichier .htaccess, personne ne pourra afficher tes images.

    Concernant ton problème, il y a une solution. Je ne l'ai plus en tête mais il me semble que c'est un ajout récent aux commentaires de la doc sur les headers ou dans le chapitre HTTP.

    [Edit] C'est bien ça :
    http://es2.php.net/manual/fr/function.header.php#61903

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Par défaut
    Je te remiercie, je vais voir

  6. #6
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 46
    Par défaut
    salut,

    il se trouve qu'auj je cherchais exactement le même truc que toi, et je suis tombé sur ça sur php.net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // caching images
    header("Expires: " . date("D, j M Y H:i:s", time() + (86400 * $CACHE_PERIODE_EN_JOURS)) . " UTC");
    header("Cache-Control: Public");
    header("Pragma: Public");
    je l'ai essayé ça l'air de marcher, l'affichage de mes images miniatures se fait plus rapidement que d'habitude, donc je suppose que c'est du cache qu'elles proviennent (je n'ai pas trouvé un moyen "scientifique" pour le vérifier)

    Voilà! @+

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    Citation Envoyé par Yogui
    Si tu protèges l'accès au répertoire d'images par un fichier .htaccess, personne ne pourra afficher tes images.
    Et en plus, tu peux mettre une page index.htm dans ton répertoire des images, qui te rediriges vers ton index à la racine

    et je ne suis pas spécialiste, mais si quelqu'un craque ton htaccess etc, il sera aussi capable de craquer ta base de données

    quelqu'un a dit : pour qu'un site soit sécurisé à 100%, ne le met pas en ligne.

  8. #8
    Membre confirmé Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Par défaut
    Votre discution me parait étrange. Pour ma part, javais fait une fonction qui changeait des couleurs dans des images pour les adapter au style de la page. j'avais donc des adresses d'images du style "pngSwap.php?src=monimage.png&c4r=000020&c4v=000&c4b=ffffff".

    Il me semble bien que le navigateur se comportait avec ces images comme avec n'importequelle image. cad que pour lui, il avait dans son cache une image nomée "pngSwap.php?src=monimage.png&c4r=000020&c4v=000&c4b=ffffff" et si cette image était rapelée, il se servait dans son cache.

    Du coup, soit je me trompe, soit le fait que tes images soient dans une base de donnée ne change rien au problème de la conservation dans le cache du navigateur.

Discussions similaires

  1. [FPDF] Afficher image BLOB (stockée dans BDD) dans un pdf
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 08/07/2014, 20h52
  2. Réponses: 2
    Dernier message: 26/09/2012, 16h07
  3. IMAGE BLOB JPEG DANS RAVE REPORT 5.0
    Par lopezpacheco dans le forum Rave
    Réponses: 4
    Dernier message: 04/05/2010, 05h18
  4. [MySQL] Afficher une image stockée dans un champs blob
    Par encoupe dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/11/2006, 12h00
  5. Afficher une Image stockée dans un champs BLOB oracle
    Par nonaparus dans le forum Access
    Réponses: 1
    Dernier message: 18/10/2006, 08h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo