Jeg gemmer variabler i applikationvariable og skal kun genindlæses, hvis webserveren genstarter eller du opdaterer menupunkterne i databasen. Jeg har ikke oplevet problemer med Applikationsparametere på en site med +3.000 brugeradgange. Jeg smider lige lidt kode, så du kan se hvorn det gjøres ( Baseret på DHTMLCENTRAL kode):
<%
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ASP CODE START - READING ITEMS FROM THE DATABASE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
function readItemsFromDatabase(){
%>
<!--
<!--#include file="../Conn/mysqlconn.asp" -->
//--->
<%
var q = "SELECT * from tblMenu WHERE userlevel<=" + Session('userlevel') + " ORDER BY parent,menuID ASC"
var rs=Server.CreateObject("ADODB.Recordset")
rs.CacheSize = 25; // Cache data fetching
rs.CursorType = 3
rs.LockType = 3
//Opening database --- --
rs.Open(q,db)
//Now using getRows because that's so sexy :}
if(!rs.EOF){
var rsarr = rs.GetRows();
rsarr = rsarr.toArray();
var cols= rs.Fields.Count //Setting how much to add to row each for
}else var rsarr=new Array()
//Closing database, we don't need it anymore - we have the info in the array
rs.close()
rs = null
var menuID,mName,mLink,parent,mSpace,mFunc
Application('menu'+ Session('userlevel')) = "" ;//nulstill for gud skyld
for(row=0;row<rsarr.length;row+=cols){ //Looping rows
//Setting variables
menuID = "m" + rsarr[row]
mName = rsarr[row+1]
mLink = String(rsarr[row+2])
if(mLink=="null") mLink=""
parent = rsarr[row+3]
if(parent!=0) parent = "m" + parent
else parent=""
mExtern = String(rsarr[row+5])
if(mExtern=="null") mExtern="in"
if(mExtern == 'in') {
//Making menu item
Application('menu'+ Session('userlevel')) += "oM.makeMenu('"+menuID+"','"+parent+"','"+mName+"','"+mLink+"')\n";
//Response.Write("oM.makeMenu('"+menuID+"','"+parent+"','"+mName+"','"+mLink+"')\n");
}
else
{mSpace = ",'','','','','','','','','','',";
//oMEdit.makeMenu('m18','m2','Nyheder','','','','','','','','','','','','adminmenu(18,"Nyheder","default.asp?scID=22",1,"in")')
mFunc= "'var abc=window.open(\"" + "
http://"+mLink+"\",\"abc\",\"width=800,height=600,scrollbars=yes,location=yes,resizable=yes,status=yes,menubar=yes,toolbar=yes\");abc.window.focus();"
Application('menu'+ Session('userlevel')) += "oM.makeMenu('"+menuID+"','"+parent+"','"+mName+"',''" +mSpace+mFunc+"')\n";
}
}
if (!Session('userlevel')) {
// logud
//Application('menu'+ Session('userlevel') ) += "oM.makeMenu('m0','','Log ind','/PFadm/apw.asp')\n";
Application('menu'+ Session('userlevel') ) += "oM.makeMenu('m0','','Log ind','PFadm/apw.asp')\n";
} else {
// logind
//Application('menu'+ Session('userlevel') ) += "oM.makeMenu('m0','','Log ud','/logud.asp')\n";
Application('menu'+ Session('userlevel') ) += "oM.makeMenu('m0','','Log ud','logud.asp')\n";
}
}
//Calling function
if ((Application('menu'+ Session('userlevel'))=="") ||(typeof(Application('menu'+ Session('userlevel')))=="undefined"))
{
Application('menu'+ Session('userlevel'))="";
readItemsFromDatabase();
}
Response.Write(Application('menu'+ Session('userlevel')));
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ASP CODE END - READING ITEMS FROM THE DATABASE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
%>