I was just playing with new tool came across IBM Page Detailer. This is similar to Fiddler but IE only. It tracks all requests sent to server time taken to connect server, how much time server took to response and how much time it took to download response. Unlike Fiddler this is more like browser view. I surf around some pages on my website and found some really strange entries in IBM Page Detailer. On each page request I can see numbers of JS and CSS files are requested on each page load. They are cached, but IE sends request each time just to check if content has changed or not.
This is the list of files that are requested each item (when browse a DNN site as unauthenticated user).
- Various module.css (1 in my case)
- any spacer.gif (2 in my case)
This had me worry for a bit. There are some of our clients that are either already having or expecting heavy traffic. Even though content is used from cache, these extra file calls for each request (fresh call + postbacks) bring some performance hit for network usage and server load.
So I started same site in FF and try to find weather this is browser specific problem. I started FF with proxy setup to use Fiddler. I found that after initial download FF don’t look for same files, it use one from cache. So the problem is IE only.
Fortunately to resolve this issue, there is an easy fix for people who have their own servers.
- Open ISS manager
- Browse file in right side pane.
- Open file properties
- Go to Http Headers tab
- Check "Enable content expiration"
- Provide expire period. I would say for dnn*.js and skin.css files you can set a longer date.
That’s it, that’s all you need to do for each file you want to be able to have caching enabled. This will improve both client and server performance due to less calls. This will also result in common content expiration behavior across different browsers.
However there is a catch – content will be downloaded after expiration date is over. So if you have set expiration date for dnn.js to 5 days, browser will download fresh copy after 5 days even if contents are not changed. But if you ask me personally I would set 15 days expire date for common files like dnn*.js or skin.css as they are least likely to be changed.
At end I think it’s far better that user download files once in 15 days than query to server on each request.
Hope you find this info useful and have your site performance improved.