Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
One of the most annoying things about application development from an architectural perspective is just how much redundant code gets executed. We have pages full of queries and loops that get executed on every single page request, when they could just be executed one time and then that data saved out and reused. Caching is the way to get rid of this redundant and unnecessary duplication of effort by the server. Unfortunately caching is usually hard to implement and hard to manage. But in this video, I am going to show you how to add cache page fragments to memory and pull those fragments back out to be used later on using new caching features in ColdFusion 9.
So to get started in Chapter 6, we'll open pagefragments.cfm. Now in this file I have essentially some of the same content we used from Chapter 3. I have a query here the top to Select * From Artists. I have also provided a Where clause in here that we are going to use to filter these results. And then I have a stock message and I show the sales report for a particular artist. So let's just take a look at this in the browser and see exactly what we are outputting. So we can see on this page, I am outputting every single artist.
If I reload, the date and time is changing here with each page reload, and if I add a URL on the end, I can just filter it to a single artist and again on every page I reload, the date and time is going to change. But this data in our case, let's say, only refreshes once a night when we run all the orders together and get everything set up. So there's no sense in reloading this data from the database every time it gets requested. So if we go back to CF Builder, we are going to simply add a cfcache tag around all of the data here.
Now if I go back to my browser, I am going to take the query string over here, and load the page, we can see it was generated at 4:37 and 23 seconds. If I reload this page, it's pulling all this data from memory. It's not going back and hitting the database again. But I want the page to eventually reload this data. As it stands right now with just a plain cfcache tag, it's going to stay in the cache until the server actually gets restarted. So to add that, we just simply add a timespan and use the CreateTimeSpan function to tell how long you want to keep this data in the cache.
In this case we are going to keep in the cache for 10 seconds at a time. So if I go back here, I'll reload my page, you can see it's changed to 4:38 and 1 second. We wait a little bit here, and reload, and now see it's changed to 4:38 and 13 seconds. So every 10 seconds ColdFusion is going to run this again and pull that data back out of the cache. So let's go ahead and add id=1 on the end and when the page loads it shows it at 4:39 and 9 seconds and it shows that single artist.
If I take that off, it still shows 4:39 and 9 seconds and it's still showing only the one artist when I wanted to display everything. So on the cfcache tag in ColdFusion 9, there is a new attribute called dependson. So, what I can do is add a dependson attribute and say that this depends on the URL.id. We'll create a unique entry in the cache that depends on what the ID value is and to make this easier to demonstrate, I am going to increase the time out here to 30 seconds instead of 10.
And I'll go back to my browser and I am going to reload this page, and you can see it loaded all artists at 4:39 and 52 seconds. I am going to add id=1 and that's at 4:40. I'll take this off. Again all artists at 4:39 and 52 seconds. I'll add it back on and it should say 4:40. So, as you can see it's now caching unique pages based off what that ID is. Now the dependson attribute can take multiple Ids.
So I can say it dependson URL.id and session.username and then I could cache a particular page for that ID for each unique session. Now one thing about using an in-memory cache is you need to be careful about how much data you're shoving in there. So in here, we'll go ahead and view all artists again and take a look at the source code. Now we have seen the source code. It's nicely formatted. It's got all kinds of tabs in there and whatnot, but the tabs really aren't important, line breaks aren't important, none of that stuff really matters to how the HTML gets rendered.
So it's counterproductive to store that data in the cache. So I'll close my source code and go back to CF Builder and I'll add one more attribute on the end of my cfcache tag, which is stripwhitespace, and I'll set that as true, save my file, go back to the browser here, and refresh again. I notice I have got a new time there. So I know it's got the latest stuff in the cache, and if I choose View Source we can now see that it's removed all the tabs and all empty line breaks, so that we have as little data in the cache as possible.
So the ability to easily cache page fragments and set the dependson values is a huge advancement to caching in ColdFusion. Just remember that to cache your data wisely so that you don't end up having a negative impact on the server performance due to memory issues. In another video you'll learn how to manage the cache and take a peek at exactly what's inside.
Get unlimited access to all courses for just $25/month.Become a member
61 Video lessons · 99913 Viewers
56 Video lessons · 113019 Viewers
71 Video lessons · 81854 Viewers
131 Video lessons · 39282 Viewers
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.