Попробуйте (требуется область применения), поместите его в метод onRequestStart файла APPLICATION.cfc
<cfscript>
if( NOT structKeyExists(APPLICATION, 'homePageImage') ) {
APPLICATION.homePageImage = structNew();
}
if(
NOT structKeyExists( APPLICATION.homePageImage, 'imageDate' )
OR NOT structKeyExists( APPLICATION.homePageImage, 'imageSrc')
OR NOT isDate( APPLICATION.homePageImage.imageDate )
OR DateDiff( "h", NOW(), APPLICATION.homePageImage.imageDate ) GT 1
) {
APPLICATION.homePageImage.imageSrc = APPLICATION.Utils.getRandomImage( "/images/captions" );
APPLICATION.homePageImage.imageDate = NOW();
}
</cfscript>
Далее вам нужно где-то определить функцию getRandomImage (что-то вроде Utils.cfc, а затем сохранить ее в Application.Utils для повторного использования)
<cffunction name="getRandomImage" returntype="string" access="public" output="false">
<cfargument name="directory" required="true" hint="this is the directory to select a random image from" />
<!--- Always define a local struct to keep your variable under control --->
<cfset var LOCAL = structNew() />
<cfif NOT directoryExists( expandPath( ARGUMENTS.directory ) )>
<cfthrow message="Directory #arguments.directory# does not exist." />
</cfif>
<cfdirectory action="list" name="LOCAL.imageList" type="file" directory="#expandPath( ARGUMENTS.directory )#" />
<!--- the ceiling part will stop you from getting 0 --->
<cfset LOCAL.targetFile = Ceiling( randRange(0, LOCAL.imageList.recordCount) ) />
<cfset LOCAL.targetFileName = ARGUMENTS.directory & "/" & LOCAL.imageList.name[ LOCAL.targetFile ] />
<cfreturn LOCAL.targetFileName />
</cffunction>
И, наконец, на вашей странице
<cfoutput>
<img src="#APPLICATION.homePageImage.ImageSrc#" />
</cfoutput>