Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Memorizzare i record di un DB in una variabili Application, Conviene veramente?

    Salve a tutti

    Sto cercando di rendere più performante il mio un CMS (content mangement sistem) in modo da ottimizzare il carico delle pagine sul server. approfondimento

    il CMS permette all'amministratore del sito di creare una struttura informativa ad albero multilivello (moduli backend). Esempio:
    Codice PHP:
    [News]
    --> 
    gastronomia 
    ----- °ricetta 1 
    -----° riceta 2 
    -----° ricetta n 
    --> eventi
    -----° sagra dell'anguilla
    ----- ° sfilata d'
    amore moda
    ----- °festa n
    --> Sport
    ----> tennis
    ----------°torneo 1
    ----------°..torneo n
    ---->Calcio
    ----------° tornao 1
    ----------° torneo n 
    Mediamente l'amministratore effettua 2 aggiornamenti al giorno, perolopiù per modificare o aggiungere foglie all'albero.

    Ad ogni chiamata da parte di un utente il CMS produce un pagina che effettua mediamente 8/10 chimate al DB (moduli frontend)

    LA maggior parte di queste chiamate servono per recuperare i nomi dei rami dell'albero in modo da ottenere link tematici del tipo:
    Codice PHP:
    [url="http://nomedominio/news/sport/tennis/torneo_1.htm"]torneo 1[/url]
    [
    url="http://nomedominio/news/sport/tennis/torneo_n.htm"]torneo n[/url]
    [
    url="http://nomedominio/news/calcio_23.htm"]Calcio[/url
    Ad ogni link stampato a video corrisponde una chimata al DB per recuperare il percorso virtuale della foglia/ramo.

    IN DEFINITIVA :
    Pensavo di ridurre il numero di chiamate al DB mettendo la struttura ad albero in una variabile Application di tipo dictionary. Leggo però che le varibili applicatio consumano moltissima memoria per cui non vorrei risolvere un problema e procurarne un'altro

    COSA NE PENSATE?
    Conviene rivedere il codice per apportare questa modifica? Oppure io gioco non vale la candela?

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Io farei un'application...
    Ma sinceramente non saprei calcolare il carico del server nelle due ipotesi.

    Roby

  3. #3
    sono piuttosto sicuro che caricare tutto in una variabile application sia meglio che interrogare il db ogni volta
    prude il dito, lui sdraiato
    ha giocato a guardie e ladri col ladro sbagliato

  4. #4

    limiti delle variabili application

    Ci sono dei limiti consigliati per l'uso di questo tipo di variabile?

    Sè la risposta è "Si", fino a dove è consigliato spingersi con la mole di dati da memorizzare in essa? O meglio, considerando che il nome di un nodo (ramo/foglia) è un vachar(100) e che per ogni nodo devo memorizzare: nome_ita, nome_eng, nome_deu,
    in line adi massima quanti nodi potrebbe gestire le mia variabile senza particolari problemi?



    Dispongo di un buon servizio di hosting per cui il server da 1 a 10 è prestante 8
    il DB è mysql4


    grazie a tutti

  5. #5
    1° problema: ma quanti nodi/foglie pensi che ci saranno mediamente in questo menu? una volta mi hai detto che arriveranno a 200, sono tantini....


    2° problema: lì'oggetto application sembrerebbe poter essere una soluzione, almeno leggendo l'approfondimento...dovresti fare qualche prova e vedere se trovi dei miglioramenti/peggioramenti


    cmq, se pensi che questo menu diventi enorme o molto grande, potresti fare come il menu del sito della microsoft (quello che comapre a sinistra all'interno dell'msdn): ovvero che carica X voci e il restante le carica, refreshando, solo se l'utente APRE IL NODO specifico...


  6. #6

    il mio problema non è ottimizzare la creazione della mappa ma sfruttarne i vantaggi

    il problema non è creare il menù... la procedura che hai
    implementato
    va benissimo e non ho intenzione di toccarla.

    Ma il sito e composto da tante pagine non solo dalla mappa, per cui memorizzando quella dictionary in una Application Variable potrei sfruttare i nomi e i percorsi memorizzati in essa per costruire porzioni di altre pagine evitando quindi di andare a ripescare ogni volta dal DB.

    esempio: attualmente per stampare il nome del nodo come titolo della pagina faccio così
    Codice PHP:
    <h1><%=getNameObj(ID)%></h1>
    function 
    getNaneOBj(id_obj)
       ..
    apre la connessione
       
    ..apre il recordeset ("SELECT name_ita From nometabella Where  Id_object="&id_obj)
       
    getNaneOBj(RS(0))
       ... 
    chiudi recordset
       
    ... chiudi connessione
    end 
    function 
    ma se memorizzassi tutto in una var. Appl.
    mi basterebbe fare
    Codice PHP:
    <h1><%=getName(base.item(chiave))%></h1>

    function 
    getName(stringa)

    if 
    trim(stringa)<>"" then
        temp
    =split(stringa,"&|&")
        
    getName=temp(3)
    else
        
    getName=""
    end if 
    quindi eliminerei una chimata al DB.

    Non so se mi sono spiegato.

  7. #7
    no non ti sei spiegato ma non è un problema...tu puoi pure mettere dentro all'application tutto il dictionary che crea e poi stampre il menu dove ti pare (in maniera da non far proprio chiamate al db), però non so quanto possa far male al server un application troppo pesante...tu parlavi di 200 nodi/foglie, forse cominciano a pesare... dovresti cmq ottenere piu vantaggi che invece creare ogni volta il dictionary (e poi lo creeresti una volta per ogni cliente)...

    implementa l'uso dell'application e testala, dovresti ottenre dei benefici (sicuramente fai meno chiamate al server e crei meno oggetti dictionary (infatti ne creeresti uno solo) usando meno risorse quindi)


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.