Output from Live HTTP headers:
https://www.vgmaps.com/System/Headers/NES.gifGET /System/Headers/NES.gif HTTP/1.1
Host: vgmaps.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie:
removedIf-Modified-Since: Mon, 22 Dec 2008 18:22:39 GMTIf-None-Match: "27ea6e6-5b-45ea6be72f565"Cache-Control: max-age=0
HTTP/1.1 304 Not ModifiedDate: Thu, 21 Jun 2012 04:41:52 GMT
Server: Apache
Connection: Keep-Alive
Keep-Alive: timeout=15, max=100
Etag: "27ea6e6-5b-45ea6be72f565"
----------------------------------------------------------
Yes, an HTTP request is still sent to the server, but only an HTTP header is sent in response, not the whole gif image. You can use other cache directives to tell a browser to hold onto a file for a period of time and not even bother checking to see if the file changes, but then if the file does change, the user won't see the new one until the cached file expires on his/her client. Which may or may not be desirable depending on the content. HTTP GET requests and 304 responses hardly take up any bandwidth. Yes, it is another connection that has to be opened, but with modern internet speeds and modern multi-core servers, it's a small overhead.
For the maps and title images, it probably wouldn't matter if they had an expiration of several hours, or even a day or two. But the HTML pages probably shouldn't carry an expiration.