As developers, we often spend most of our time planning a database strategy, optimizing algorithms, etc., when it comes to tweaking performance of an application. It makes sense, because that's where the true architectural decisions are made. HTML and Javacript (not
counting AJAX) seldom fall on the developer's plate for performance tuning (usually, that's fine by them). Let's face it: there's nothing glorified about tweaking HTML tags and finding that perfect balance of image quality vs. size. *Yawn* That was fun in '95 (and even then only for a few weeks).
Still, though, there's quite a bit that can be done on the front end to help boost performance. If the application is large enough, a content distribution network (like Akamai) is a good choice. But for smaller apps -- even intranet apps -- there's a couple of tweaks we can make, namely: compression and content expiration.
Compression typically uses gzip or deflate algorithms to create a lossless, smaller version for transmission. Since clients should support this transparently (their the ones who send the Accept header, so they should be able to handle it) it's a pretty easy implementation. If client's don't accept the encodings you're offering -- such as gzip or deflate -- no worries, IIS sends the plain text version.
Aside from compression, content expiration is another area that can really give a boost to page load times. If you use Fiddler to watch the number of requests IE makes on a given page, you may notice that most of the images and icons are always given 304 Not Modified responses. While it's great that these images aren't resent, it's still a connection the browser needs to make with the web server. Multiply that by 20 or so images on a page, the page load time begins to suffer.
For ease of use, it's often best to have directories set aside for such categorization. For example, most /images folders can be set to at least a 7 day expiration time. To do this, select the folder in IIS and select the HTTP Headers tab, and set the expiration at your discretion. When IIS servers content from the folder, it will send the expiration header.
If you don't think you have enough images on your page to make this worthwhile, I encourage you to open Fiddler, and watch how many requests are made on a given page. If you see more than a few 304's, consider content expiration. You'll be amazed at the difference in page load times.