Site Contents
Home
My Blog
ColdFusion
JRun
Flex
Wireless & Networking
Hardware & Gadgets
HDTV
Software Picks
Pictures
Contact Me
Search


My Articles & Papers
Flex Performance
Server/Client
mm.com Under the Hood
Multiple Instances of CFMX
Multiple Instance Config
NLB with ColdFusion
Clustering CFMX for J2EE
Multi-Tier Hardware LB w CFMX
Cisco CSS & Coldfusion MX
JRun 4 Jini based Clustering
WiFi Growth

2ID Tacweb

Other Hobbys
Body-For-Life Challenge

Personal Projects
Family Pool
Deck Gate

username:
password:
 

 
Building burcell.org

Welcome to bpurcell.org, the personal homepage of Brandon Purcell. I started building bpurcell.org many, many years ago to share information I ran across everyday in my role as a Support Engineer and Consultant for Macromedia/Adobe. As a support engineer and consultant I always had a lot to blog about but as I moved into managment roles at Adobe my technical content dwindled.

I currently work as the Director of Technology for Universal Mind. My primary responsiblity is managing the SpatialKey project and it has been an amazing experience. I have been spending a lot of time working with Amazon Ec2 and will share my experiences through the blog in the future. I truly believe that Cloud Computing is the IT platform of the future and we have built the SpatialKey architecture on top of Ec2.

Viewing Individual Entry / Main
November 10, 2003

I spent some time putting together an admin for the CF_Accelerate tag. I have not published the code yet but you can look at the admin and give me your thoughts and any ideas for features. Once you have implemented the CF_Accelerate tag in your code you just drop the admin in place and it give you full functionality for viewing, cleaning, and updating your cache.

Cache Viewer

  • Lists all cached trees and lets you drill down to individual entries
  • Prune a tree at any level or an individual cached entry
  • View the contents of an individual cached entry
  • View the cache date/time, expiration date/time and the content length of a cached entry
  • Add and remove URL's to the cache auto-refresh feature (stored in WDDX file)

Cache Skimmer (Cleans expired Cache)

  • Examines all cached entries and clears out expired cache to manage memory
  • Allows you to (one-click) create a scheduled task that invokes the Skimmer every X minutes
  • Add URL's in the admin to auto-refresh with CFHTTP when the skimmer runs, this keeps the cache fresh

Cache Statistics

  • View total number of Cache entries
  • View detailed number of cache entries for each tree

With the online demo version you can view all of the features but some of them have been disable to prevent my sites cache from getting hosed up.

View the online admin here and please post your comments below.

Comments

I have found a question some days ago between the blog comments about someone who like to see how much memory usage the caching would take.

You can do this by content length. Content length is shown in bytes, so multiply it with 1024 (1024 is only for mem chips, 1000 is for storage like drives, etc.) and you get the kilobytes in memory.

Take the sum of all cached entries and their content length and you should get a pretty good indication of the caching memory size in total.

I do not exactly now how J2EE garbage collectors make influences on this "theory".


I would like to have this feature too. So I tried and wrote e function to do it. Since This function could be useful not only for cached pages, but also any complex vars, I tried to make it work for objects, arrays, queries and even binary data.

The result didn't work very well for very large vars, and I didnĀ“t have time to look at it at a deep level, but here is the code if someone wants to take a chance: <cffunction name="varSize" returntype="string" displayname="varSize" output="Yes"> <cfargument name="var" required="Yes"> <cfargument name="size" required="No" default="0"> <cfargument name="deeplevel" required="No" default="5"> <cfargument name="thislevel" required="No" default="0"> <cfset var thissize = arguments.size> <cfset var datatype = "string"> <cfset var i = ""> <cfset var j = ""> <cfset var k = ""> <cfset var thisthislevel = arguments.thislevel + 1> <!--- stops reading at a specific level ---> <cfif thisthislevel gte arguments.deeplevel> <cfreturn thissize> </cfif> <!---identifies the data type---> <cfif IsSimpleValue(arguments.var)> <cfset datatype = "string"> </cfif> <cfif IsStruct(arguments.var)> <cfset datatype = "struct"> </cfif> <cfif IsArray(arguments.var)> <cfset datatype = "array"> </cfif> <cfif IsBinary(arguments.var)> <cfset datatype = "binary"> </cfif> <cfif IsQuery(arguments.var)> <cfset datatype = "query"> </cfif> <cfif IsObject(arguments.var)> <cfset datatype = "object"> </cfif> <cfif IsWDDX(arguments.var)> <cfset datatype = "wddx"> </cfif> <!--- sums the var len ---> <cfswitch expression="#datatype#"> <cfcase value="string,wddx"> <cfset thissize = thissize + Len(arguments.var)> </cfcase> <cfcase value="struct,object"> <cfloop collection="#arguments.var#" item="i"> <cfset thissize = thissize + Len(i)> <cfif IsSimpleValue(arguments.var[i])> <cfset thissize = thissize + Len(arguments.var[i])> <cfelse> <!--- If is not a simple var, I go deeper sizing the var content ---> <cfset thissize = thissize + varsize(var=arguments.var[i],size="0",deeplevel=arguments.deeplevel, thislevel=arguments.thislevel) > </cfif> </cfloop> </cfcase> <cfcase value="array"> <cfloop from="1" to="#ArrayLen(arguments.var)#" index="j"> <cfset thissize = thissize + Len(j)> <!--- I had problems sizing objects, so I try/catch output the isobject(j) here --> <cftry> <cfif IsSimpleValue(arguments.var[j])> <cfset thissize = thissize + Len(arguments.var[j])> <cfelse> <cfset thissize = thissize + varsize(var=arguments.var[j],size="0",deeplevel=arguments.deeplevel, thislevel=arguments.thislevel) > </cfif> <cfcatch> <cfoutput>#Isobject(j)#</cfoutput> </cfcatch> </cftry> </cfloop> </cfcase> <cfcase value="binary"> <cfset thissize = thissize + Len(arguments.var)> </cfcase> <cfcase value="query"> <cfset qVar = arguments.var> <cfloop query="qVar"> <cfloop list="#qVar.columnlist#" index="k"> <cfset thissize = thissize + Len(Evaluate("qVar.#k#"))> </cfloop> </cfloop> </cfcase> </cfswitch> <cfreturn Int(thissize*1024)> </cffunction>


I will dive into your code definately.

Just make sure you only execute this code, when you want to display debug information like this.

It can have an astonishing impact on the page execution time when leaving it on with each request.


Hello Brandon.

Are you intending to release the code for this demo any time soon?

We are using cf_accelerate in our site, and would like to have some kind of administration available.

Thanks!


 

Calendar
SunMonTueWedThuFriSat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Subject Archives
Amazon EC2 (15)
ColdFusionMX (155)
Corvette (3)
Flash Lite (4)
Flash Media Server (5)
Flash Player (3)
Flex (39)
General Web Dev (14)
HDTV (3)
Jboss (1)
Jquery (2)
JRun (59)
Max 2003 (3)
Other (33)
PC Hardware (16)
Software (17)
SpatialKey (7)
Wireless (8)
Working Out (1)

Search
RSS Feed
Feed Listing

www.flickr.com
Corvette - October 2005 brandonpurcell's Corvette - October 2005 photoset
Macromedia ColdFusion MX

Featured Links
Stock Footage
Page Render Time:203 user:""