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

Performance Web Discussion :

Ergonomie et architecture dossiers


Sujet :

Performance Web

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    février 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : février 2011
    Messages : 37
    Points : 41
    Points
    41
    Par défaut Ergonomie et architecture dossiers
    Salut à tous,

    Je ne sais pas trop où poster ça mais j'aurais aimé connaître votre avis concernant un souci que j'ai et auquel je n'avais pas pensé.

    Imaginons un site de stockage d'images... En pratique, comment booster les performances (ergonomie!!) pour les dossiers de stockage?

    A:

    -> 1 dossier "IMAGES" avec 1'000'000 d'images
    --> peu importe le nombre de fichiers à l'intérieur puisque qu'on ne va pas "naviguer" dans ce dossier auquel cas, le système planterais?

    B:

    -> 1 dossier "IMAGES" avec 999 sous-dossiers contenant chacun au maximum 999 images?
    --> assez fastoche à mettre en place "au fur et mesure" avec mkdir mais terrible pour la synthèse?

    C:

    ->1 dossier "IMAGES" avec 999 sous-dossiers contenant chacun 999 sous-sous-dossiers contenant chacun 499 images au maximum?
    --> victoire ergonomique?

    Merci de vos précieux conseils!

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    février 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2010
    Messages : 119
    Points : 777
    Points
    777
    Par défaut
    salut
    ça n'est pas le bon forum, car c'est de la perf server side, mais je vais te répondre quand même parce qu'il se trouve qu'on a eu à résoudre le même problème

    1 million de fichiers par répertoire, c'est pas jouable pour le système effectivement. Ce qu'on a fait :
    - nos fichiers correspondent à des IDs de fichier dans la base de données
    - ces IDs sont incrémentaux
    - on prend les x (4 en l'occurrence) derniers chiffres en partant de la fin, chaque chiffre correspond à un sous-dossier

    par exemple le fichier avec l'id 123456789 sera rangé dans
    /files/9/8/7/6/123456789.jpg
    lorsqu'on crée un nouveau serveur on a un petit script qui va créer tous les sous-dossiers

    voilà, c'est testé et éprouvé sur 2 sites différents depuis 10 ans

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    février 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : février 2011
    Messages : 37
    Points : 41
    Points
    41
    Par défaut
    Hello! Merci pour ta réponse

    Très fin de reprendre les derniers chiffres de tes id's!!!!!

    Finalement, je suis partis sur une architecture à 2 dossiers à 3 chiffres:

    img/{dossier_1}/{dossier_2}/userId+str_split(md5(image),20).jpg
    exemple -> 235/541/9__778cf7fe997943ec1a30.jpg

    avec une sauvegarde du lien DIRECT dans la db:

    varchar(38)
    {dossier_1}/{dossier_2}/userId+str_split(md5(image),20).jpg

    au lieu de smallint(3) + smallint(3) + varchar(20), je perds peu, non?

    Donc : img / 999 dossiers / 999 sous-dossiers / x images

    Qu'est-ce que t'en penses?

    Edit: j'ai pensé créer un script pour créer les dossiers à la volée mais je me suis dis que c'est plus simple et moins lourd d'emblée de créer les dossiers au fur et à mesure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $endPath = str_replace('//','/',$_SERVER['DOCUMENT_ROOT'] . $dir_u_img . $dir_st); // first sub dir
    
    if(!is_dir($endPath)) { mkdir ($endPath, 0700); }
    $endPathBis = str_replace('//','/',$_SERVER['DOCUMENT_ROOT'] . $dir_u_img . $abs_dir); // second sub dir
    if(!is_dir($endPathBis)) { mkdir ($endPathBis, 0700); }
    Qu'est-ce que t'en penses? Wii, encore lol

    Encore merci!!!

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    février 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2010
    Messages : 119
    Points : 777
    Points
    777
    Par défaut
    Oui la sauvegarde dans la base du chemin final est essentiel, au cas où tu changes d'algo entretemps, et ça évite
    Disons qu'avec seulement 2 niveaux de 999 dossiers, cela va te faire 1 million de dossiers, mais avoir déjà 1000 dossiers de listé ça peut être beaucoup non ?

    avec 4 niveaux de dossiers à 1 chiffre, tu n'as que 10000 dossiers, par contre tu n'as que 10 dossiers par dossier.

    Si tu n'as "que" 1 million d'images, ça va faire une moyenne de 1 fichier par dossier, pas très efficace.

    nous on n'avait pas mis l'id utilisateur dans le chemin du fichier, au cas où on se fasse pirater, on ne puisse pas retrouver tous les fichiers d'un utilisateur.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    février 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : février 2011
    Messages : 37
    Points : 41
    Points
    41
    Par défaut
    Finalement j'ai suivi ton idée

    Une architecture à 5 sous-dossiers représentant les 5 derniers chiffres du nom de fichier et j'ai viré l'id de l'utilisateur, d'autant que j'en ai pas besoin...

    Merci beaucoup!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Architecture dossiers mingw
    Par nikau6 dans le forum MinGW
    Réponses: 1
    Dernier message: 16/08/2014, 10h20
  2. Multidomaines, quelle architecture de dossier ?
    Par juninho dans le forum Hébergement
    Réponses: 1
    Dernier message: 26/11/2011, 01h29
  3. Dossier d'Architecture Fonctionnelle(DAF)
    Par evan32 dans le forum UML
    Réponses: 5
    Dernier message: 17/03/2010, 15h29
  4. Réponses: 7
    Dernier message: 25/01/2008, 10h37
  5. Copier un dossier en gardant l'architecture
    Par kedare dans le forum Ruby
    Réponses: 2
    Dernier message: 07/11/2006, 22h48

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