Récursivement Build navigation en ASP

  • s15199d
  • Expert
  • Expert
  • Avatar de l’utilisateur
  • Inscription: Fév 20, 2004
  • Messages: 524
  • Loc: NC, USA
  • Status: Offline

Message Octobre 7th, 2009, 10:20 am

Ive a obtenu un script qui construit récursivement ma navigation web basée sur une table SQL.

Il fonctionne parfaitement, mais sa lenteur, et des vitesses de ma page-load souffrent. Allant de moins de 150 millisecondes à plus de 2600 millisecondes.

Ainsi, Im essayant de reconfigurer mon script pour accomplir le même but, mais le faire plus rapidement.

Ma table SQL a, ID, Pare Notiô, Nom, où ID est unique.

Quelqu'un at-il un script bien pratique pour ça? Il me semble que ce serait une tâche commune...Ive il Googled et rien de bon en advint.

Merci d'avance!
Image
Give a man a fish he eats for a day. Teach a man to fish he eats for a lifetime.
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Octobre 7th, 2009, 10:20 am

  • s15199d
  • Expert
  • Expert
  • Avatar de l’utilisateur
  • Inscription: Fév 20, 2004
  • Messages: 524
  • Loc: NC, USA
  • Status: Offline

Message Octobre 7th, 2009, 10:20 am

Code: [ Select ]
    'LEVEL 0
    sql = "select id, name from chief_product where parentid=0 and showitem='yes' and type='menu' order by name"
    
    Set rs0 = nothing
    Set rs0 = querySQL(sql)    
    if not rs0.EOF then
        
        'FOR EACH ITEM IN rs0 RESPONSE.WRITE rs0.name AND GET CHILDREN
        'LEVEL 1
        response.Write("<ul>")
        while not rs0.EOF            
            if lcase(rs0.fields("name").value) <> "survey" then                
                sql = "select id, name from chief_product where parentid="& rs0.fields("id").value &" and showitem='yes' and type='menu' order by name"
                Set rs1 = nothing
                Set rs1 = querySQL(sql)        
                if not rs1.EOF then
                    response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"'>" & rs0.fields("name").value & "&nbsp;&raquo;</a>")
                    'FOR EACH ITEM IN rs1 RESPONSE.WRITE rs1.name AND GET CHILDREN
                    'LEVEL 2
                    response.Write("<ul>")
                    while not rs1.EOF                        
                        sql = "select id, name from chief_product where parentid="& rs1.fields("id").value &" and showitem='yes' and type='menu' order by name"
                        Set rs2 = nothing
                        Set rs2 = querySQL(sql)        
                        if not rs2.EOF then
                            response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"/"&replace(rs1.fields("name").value, "/", ",")&"'>" & rs1.fields("name").value & "&nbsp;&raquo;</a>")
                            'FOR EACH ITEM IN rs2 RESPONSE.WRITE rs2.name AND GET CHILDREN
                            'LEVEL 3    
                            response.Write("<ul>")                
                            while not rs2.EOF                                
                                sql = "select id, name from chief_product where parentid="& rs2.fields("id").value &" and showitem='yes' and type='menu' order by name"
                                Set rs3 = nothing
                                Set rs3 = querySQL(sql)        
                                if not rs3.EOF then
                                    response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"/"&replace(rs1.fields("name").value, "/", ",")&"/"&replace(rs2.fields("name").value, "/", ",")&"'>" & rs2.fields("name").value & "&nbsp;&raquo;</a>")

                                else
                                    response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"/"&replace(rs1.fields("name").value, "/", ",")&"/"&replace(rs2.fields("name").value, "/", ",")&"'>" & rs2.fields("name").value & "</a>")
                                end if
                                response.Write("</li>")
                                rs2.movenext
                            wend
                            response.Write("</ul>")        
                        else
                            response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"/"&replace(rs1.fields("name").value, "/", ",")&"'>" & rs1.fields("name").value & "</a>")
                        end if
                        response.Write("</li>")
                        rs1.movenext
                    wend
                    response.Write("</ul>")            
            
                else
                    response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"'>" & rs0.fields("name").value & "</a>")                                
                end if                        
                response.Write("</li>")
            
            end if 'excludes SURVEY
            rs0.movenext
        wend        
        response.Write("<li style='color:black;'><a href='"&basepath&"Survey'>Survey</a></li>")
            
    end if
  1.     'LEVEL 0
  2.     sql = "select id, name from chief_product where parentid=0 and showitem='yes' and type='menu' order by name"
  3.     
  4.     Set rs0 = nothing
  5.     Set rs0 = querySQL(sql)    
  6.     if not rs0.EOF then
  7.         
  8.         'FOR EACH ITEM IN rs0 RESPONSE.WRITE rs0.name AND GET CHILDREN
  9.         'LEVEL 1
  10.         response.Write("<ul>")
  11.         while not rs0.EOF            
  12.             if lcase(rs0.fields("name").value) <> "survey" then                
  13.                 sql = "select id, name from chief_product where parentid="& rs0.fields("id").value &" and showitem='yes' and type='menu' order by name"
  14.                 Set rs1 = nothing
  15.                 Set rs1 = querySQL(sql)        
  16.                 if not rs1.EOF then
  17.                     response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"'>" & rs0.fields("name").value & "&nbsp;&raquo;</a>")
  18.                     'FOR EACH ITEM IN rs1 RESPONSE.WRITE rs1.name AND GET CHILDREN
  19.                     'LEVEL 2
  20.                     response.Write("<ul>")
  21.                     while not rs1.EOF                        
  22.                         sql = "select id, name from chief_product where parentid="& rs1.fields("id").value &" and showitem='yes' and type='menu' order by name"
  23.                         Set rs2 = nothing
  24.                         Set rs2 = querySQL(sql)        
  25.                         if not rs2.EOF then
  26.                             response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"/"&replace(rs1.fields("name").value, "/", ",")&"'>" & rs1.fields("name").value & "&nbsp;&raquo;</a>")
  27.                             'FOR EACH ITEM IN rs2 RESPONSE.WRITE rs2.name AND GET CHILDREN
  28.                             'LEVEL 3    
  29.                             response.Write("<ul>")                
  30.                             while not rs2.EOF                                
  31.                                 sql = "select id, name from chief_product where parentid="& rs2.fields("id").value &" and showitem='yes' and type='menu' order by name"
  32.                                 Set rs3 = nothing
  33.                                 Set rs3 = querySQL(sql)        
  34.                                 if not rs3.EOF then
  35.                                     response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"/"&replace(rs1.fields("name").value, "/", ",")&"/"&replace(rs2.fields("name").value, "/", ",")&"'>" & rs2.fields("name").value & "&nbsp;&raquo;</a>")
  36.                                 else
  37.                                     response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"/"&replace(rs1.fields("name").value, "/", ",")&"/"&replace(rs2.fields("name").value, "/", ",")&"'>" & rs2.fields("name").value & "</a>")
  38.                                 end if
  39.                                 response.Write("</li>")
  40.                                 rs2.movenext
  41.                             wend
  42.                             response.Write("</ul>")        
  43.                         else
  44.                             response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"/"&replace(rs1.fields("name").value, "/", ",")&"'>" & rs1.fields("name").value & "</a>")
  45.                         end if
  46.                         response.Write("</li>")
  47.                         rs1.movenext
  48.                     wend
  49.                     response.Write("</ul>")            
  50.             
  51.                 else
  52.                     response.Write("<li><a href='"&basepath&replace(rs0.fields("name").value, "/", ",")&"'>" & rs0.fields("name").value & "</a>")                                
  53.                 end if                        
  54.                 response.Write("</li>")
  55.             
  56.             end if 'excludes SURVEY
  57.             rs0.movenext
  58.         wend        
  59.         response.Write("<li style='color:black;'><a href='"&basepath&"Survey'>Survey</a></li>")
  60.             
  61.     end if
Image
Give a man a fish he eats for a day. Teach a man to fish he eats for a lifetime.
  • s15199d
  • Expert
  • Expert
  • Avatar de l’utilisateur
  • Inscription: Fév 20, 2004
  • Messages: 524
  • Loc: NC, USA
  • Status: Offline

Message Octobre 8th, 2009, 7:39 am

Toute opinion sur la façon d'accélérer ce processus?
Image
Give a man a fish he eats for a day. Teach a man to fish he eats for a lifetime.
  • s15199d
  • Expert
  • Expert
  • Avatar de l’utilisateur
  • Inscription: Fév 20, 2004
  • Messages: 524
  • Loc: NC, USA
  • Status: Offline

Message Octobre 8th, 2009, 1:13 pm

Ma navigation est chargé dans chaque page comme un fichier d'inclusion...

Est-il possible de mettre en cache un fichier inclus?

Ive a ajouté
Code: [ Select ]
<%response.Expires=30%>


dans le fichier nav qui est inclus...but thats thats tant que cache la page chargement du fichier nav...pas la valeur liquidative de fichier lui-même.

Exemple: les charges default.asp nav.inc

nav.inc a le code mentionné précédemment.

Le résultat est default.asp devient en cache.

Id apprécions toute contribution que vous avez mai...
Image
Give a man a fish he eats for a day. Teach a man to fish he eats for a lifetime.

Afficher de l'information

  • Total des messages de ce sujet: 4 messages
  • Utilisateurs parcourant ce forum: Kurthead+1 et 164 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC