Thanks for your replies,
It seams the number of files went to 18000. Now it's back at
3000. So instead of 2 minutes, it takes 15 seconds (still quite
slow). Anybody knows how to speed it up?
I use a tag called "dirlist.cfm" (written by Rizal
Firmansyah, 2001). I had to modify it to work with MX. Maybe
there's a better one.. Thanks..(here's the code:
<cfsetting enablecfoutputonly="yes">
<!--- check and setup parameters --->
<cfparam name="attributes.filter" default="*.*">
<cfparam name="attributes.sort" default="">
<cfset dirs=attributes.Directory>
<cfset Name=attributes.Name>
<cfif not isdefined("caller.#Name#")>
<cfset "caller.#Name#"="">
</cfif>
<!--- create query --->
<cfset TempResult=querynew("Name, Ext, Dir, Size, Type,
DateLastModified, Attributes, Mode")>
<!--- loop through directories --->
<cfloop condition="listlen(dirs) gt 0">
<cfset CurrDir=listfirst(dirs)>
<cfloop list="#attributes.filter#" index="CurrFilter">
<!--- <cfdirectory action="LIST" directory="#CurrDir#"
name="DirResult" filter="#CurrFilter#" sort="#attributes.sort#">
--->
<cfdirectory action="LIST" directory="#CurrDir#"
name="DirResult" sort="#attributes.sort#">
<cfloop query="DirResult">
<cfif ((Type is "Dir") and (Name neq ".") and (Name neq
"..")) or
(Type is "File")>
<cfif queryaddrow(TempResult)>
<cfset dummy=querysetcell(TempResult,"Name",Name)>
<cfif (Type is "File") and (Name contains ".")>
<cfset
dummy=querysetcell(TempResult,"Ext",reverse(listfirst(reverse(Name),".")))>
<cfelse>
<cfset dummy=querysetcell(TempResult,"Ext","")>
</cfif>
<cfset dummy=querysetcell(TempResult,"Dir",CurrDir)>
<cfset dummy=querysetcell(TempResult,"Size",Size)>
<cfset dummy=querysetcell(TempResult,"Type",Type)>
<cfset
dummy=querysetcell(TempResult,"DateLastModified",DateLastModified)>
<cfset
dummy=querysetcell(TempResult,"Attributes",Attributes)>
<cfset dummy=querysetcell(TempResult,"Mode",Mode)>
</cfif>
<!--- add directories found to search list --->
<cfif (Type is "Dir")>
<cfset Dirs=listappend(Dirs,"#CurrDir#\#Name#")>
</cfif>
</cfif>
</cfloop>
</cfloop>
<cfset Dirs=listdeleteat(Dirs,1)>
</cfloop>
<!--- pass result to calling templates --->
<cfset "caller.#Attributes.Name#"=TempResult>
<cfsetting enablecfoutputonly="no">
Thanks