Scott Sheppard

Who's Viewing

« FREE Downloads available from Autodesk Labs | Main | Project Freewheel Login - required as little as possible »

September 04, 2007

Project Freewheel: The importance of the right amount of cache

There are two ways to bring a design into Project Freewheel. Depending on which method you chose, you may need to be aware of an internet concept known as "cache headers" if you change your design and want to ensure that Project Freewheel reflects your changes. Method one involves uploading a design from your local computer or a network location. Method two involves pointing Project Freewheel to a file that is already available on the web. Project Freewheel treats these differently:

Aspect Uploaded
Design
Design Already
on Web
Addition You upload
a file
You specify
a URL
Deletion We may remove file
after 30 days or
you delete file
You remove file
from your web server and
wait for cache interval
Modification You upload
new file
You update file
on your web server and
wait for cache interval
Included in
My Designs
yes yes
(was not originally)
Resides In
Server
Cache
Until you delete
file from
My Designs or
sometime
after 30 days
4.5 days
or
cache header interval
you specify
  1. Uploaded Design
    When you use File->Open to upload a design to the Project Freewheel server, a copy of your design is directly placed on the Project Freewheel server. Your design appears in your My Designs list. Though Autodesk policy only promises that the design will be there for 30 days, in practice, we have allowed designs to remain there until you delete them. When your designs change, you upload the new versions to the Project Freewheel server. In essence, you control the addition, modification, and deletion of your designs and how they are shared with Project Freewheel.

  2. Design Already on Web
    When you use File->Open to specify a design already available on the web, a copy of the design is indirectly placed in the Project Freewheel server. Since it was not directly uploaded, your design does not appear in your My Designs list. By using the indirect copy, Project Freewheel operation is optimized since images are rendered from the local copy stored in the Project Freewheel server cache. In this case, addition and deletion policies do not apply. But what about modification? In this case, you do not upload a modified version of the design when it changes. All that happens is that the design is updated at its original location on the web. Since the Project Freewheel server does not receive an updated copy, how can it tell when to refresh the copy in its cache? If the Project Freewheel server were to check the original design on every access, performance would suffer and that would defeat the purpose of the cache. So how does Project Freewheel server know when to check the original design?

Luckily the internet provides a generic solution for handling this type of situation. The HTTP specification solves the problem by defining cache headers that tell downstream readers how long an HTTP response is valid. The Freewheel server honors these headers when they are set. Project Freewheel compares the current time for the copy of the design in its cache to determine if the header has expired. If it has, it checks the original design using the URL. If the design is unchanged, it resets its clock and continues to use the copy in its cache. If the design has changed, it loads a new copy of the design into its cache. Images are rendered from the new copy.

So it's important that you specify cache headers when you share you designs on the web. How this is done depends on your server. For example, the header values are set on the HTTP Headers tab for Microsoft IIS:

Cache1

Cache headers can be set for sites, folders, are individual files. For example, if you wish to set everything to have a 4 day timeout:

Set2_2

When the cache header value is not set, web servers - including Project Freewheel - treat the file as if it has a 4.5 day cache header. This is a reasonable compromise between dynamic and static data. To work around this value for situations where a different value is more appropriate, set the HTTP cache headers appropriately. So make sure you set your headers. You should set your cache headers in accordance with how frequently you believe you will be updating your design. This is a good practice for browsers in general - not just for Project Freewheel.

Helping customers view design data in accordance with accepted internet practices is alive in the lab.

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d8341caed853ef00e54ee254308834

Listed below are links to weblogs that reference Project Freewheel: The importance of the right amount of cache:

Comments

RSS Feed

Search