• Super User

    per quanto riguarda le tabelle / query, quando vuoi le analiziamo insieme, per le immagini io ottengo 1/3 del peso delle tue e la dimenzione più o meno è identica.
    ho la dimensione massima della thumb a 120 (dipende se è sdraiata o in piedi la foto).

    ho strutturato lo script in modo da avere 3 dimensioni:
    thumb 120
    media 350
    grande 700

    quando viene richiesta la foto verifico se esiste il file che si chiama PREFISSODIMENSIONE_NOMEFOTO.jpg

    se non esiste, tramite la libreria gd la creo con le dimensioni impostate, quindi se è una thumbs la creo con la dimensione massima a 120 e l'altra ridimensionata per mantenere le proporzioni, se invece esiste faccio semplicemente <img etc etc etc

    in questo modo le 3 versioni dell'immagine vengono create automaticamente quando servono. è un pochino lento la prima volta perch+è deve creare il file ma le volte successive è velocissimo ed ottieni un risparmio notevole in termini di banda, di lavoro tuo nel generare le versioni dell'immagine o del processore se hai deciso di generare la dimensione ottimale in modo dinamico.

    la versione precedente di questo script ridimensionava la foto al volo quindi, ogni volta che veniva richiesta apriva il file, lo ridimensionava e lo sparava al browser. purtroppo succhiava na marea di risorse ed ho dovuto ottimizzare in questo modo.

    se ti serve posso mandarti lo script che uso io così ne prendi spunto.


  • Super User

    il mio fa esattamente quello che fa il tuo.
    Le crea solo la prima volta.

    Il problema è che sono tutte in una dir e sono piu di 3.000

    Quindi anche solo per controllare se il file c'è deve farli passare tutti...

    Hai anche tu una dir sola?


  • Super User

    io ho una dir per ogni galleria.

    100 gallerie 100 dir

    il nome della dir l'ho archiviato nel database quindi riduco da due a uno i cicli e vado diretto a colpo sicuro.

    per le immagini ho creato un file di testo elenco.txt che viene creato la prima votla che lo script fa il ciclo sui file presenti nella cartella.

    se questo file non esiste fa il ciclo e crea il file. se esiste l'array che contiene il nome delle immagini viene recuperato dal file elenco.txt

    quindi ho
    img1.jpg;img2.jpg;img3.jpg etc etc

    con explode recupero l'array.

    ho trovato questa soluzione la più rapida però-... visto che abbiamo lo stesso "problema" possiamo trovare una soluzione anche migliore 😄 :yuppi:


  • Super User

    eheheh, ok...per ora vedo di fare tutto in sottocartelle e mantenere l'algoritmo che ho ora (scorre le sottocartelle senza elenco), poi vedo un po come va.

    Come ti sembra il mio sito? E' molto lento? Cosa in particolare?

    Giusto per avere un confronto...

    Grazie ancora
    CIAO!


  • Super User

    hai una home da 200 kb,anche questo influisce nel caricamento e visualizzazione della pagina.

    guarda se riesci ad elminare qualcosa.


  • Super User

    a me dice 22 KB

    sicuro sia 200?

    Prova a dare un occhio di come ti sembra ora il sito...ho fatto quella modifica delle sottocartelle...ora dovrebbe cercare tra al massimo una 20ina di foto.. 😉


  • Super User

    il test è semplice.
    vuota la cartella dei file temporanei.
    carica la pagina e guarda tutto quello che ti tira giù.

    per la precisione sono 197 kb :ciauz:


  • Super User

    hai ragione 😉


  • Super User

    come ti sembra ora la velocità?


  • Super User

    :yuppi: :yuppi: :yuppi:

    ora mi sembra decisamente più veloce.
    vado a sensazione, niente dati precisi, però.... ora va molto meglio 😄


  • Super User

    bene bene

    hai qualche suggerimento per togliere i join che sono FONDAMENTALI per me? 😞


  • Super User

    a quali join ti riferisci?


  • Super User

    inner join che ci sono in alcune query.

    Non parlo di soluzioni "specifiche" ma di un qualcosa di generale per superare dei join 😞

    Grazie mille!


  • Super User

    non sono i join a creare problemi ma gli indici che hai creato sulle tabelle e la tipologia di indice.

    purtroppo conosco poco mssql ed ancora meno mysql ma mi sono ripromesso di prendermi un bel manuale di mysql e studiarlo a fondo per ottimizzare il suo utilizzo.

    le regole per ottimizzare un db prevedono la recola ACID innanzitutto,
    l'assoluta certezza che il dato è unico nel database e qundi non ridondante,
    le tabelle di produzione sono snelle e leggere e quindi ogni dato che non serve più viene storicizzato, gli indici vengono fatti in modo corretto, quelli cluster soprattutto.

    se hai ricerche su un po' di testo usa gli indici full text.

    qunado fai una query chiedi sempre i dati indispensabili e non fare mai select * from tabella a meno che non sia strettamente indispensabile.

    la chiave primaria della tabella dovrà essere un int perchè gestire 4 byte è ben diverso da gestirne n di un varchar.

    meglio usare i char perchè mantengono la pagine dei dati contigue mentre con i varchar (più comodi in programmazione) non garantiscono questo e quindi il dato è frammentato.

    se fai spesso inserimenti di una certa entità fai in modo di ricostruire gli indici.


  • Super User

    @Tymba said:

    le tabelle di produzione sono snelle e leggere e quindi ogni dato che non serve più viene storicizzato, gli indici vengono fatti in modo corretto, quelli cluster soprattutto.

    qunado fai una query chiedi sempre i dati indispensabili e non fare mai select * from tabella a meno che non sia strettamente indispensabile.

    la chiave primaria della tabella dovrà essere un int perchè gestire 4 byte è ben diverso da gestirne n di un varchar.

    Allora, diciamo che praticamente faccio già tutto quello che mi consigli.

    Unica cosa...non so cosa sono gli indici cluster.. :mmm:

    Grazie millissime!


  • Super User

    gli indici cluster o meglio l'indice cluster di una tabella è quell'indice che ordina fisicamente sul disco i dati. In sostanza dice con quale ordine andare a scrivere i dati sul disco e quindi eprmette una velocità di interrogazione decisamente superiore.
    Non sono sicurissimo che questa tipologia di indice ci sia anche mysql. Ho appena scaricato il manualetto for dummy dal sito (800 pagine porga paletta) ed ora gli do una guardata poi ti faccio sapere qualcosa.


  • Super User

    gli indici ce li ha...sono questi cluster che non mi tornano 😄

    Grazie mille

    CIAO!


  • Super User

    si si lo so che gl'indici ci sono ... e ci mancherebbe hehehe
    ho il dubbio sull'esistenza degl'indici cluster.

    solo a livello di "discussione tra amici" hai mai dato un'occhiata ai benchmark sul sito di mysql?

    è un motore veramente con i contro....i

    per questo voglio studiarlo per bene perchè sto meditando di usarlo anche in altri ambiti (nei miei programmi).