I recently became interested in customizing some of the news feeds for FreshPorts. Specifically, I wanted to allow users to have a news feed for their watch list (that’s the list of software they want to track). The existing news feed is already the most popular item on the website. It accounts for over 13% of all my web traffic.
I was concerned that if I created yet more news feeds, traffic would jump.
I posted my ideas to the FreeBSD ports mailing list. A private reply mentioned that using a 304 code should help things. That’s when I found out about conditional http. A little light went on.
FreshPorts is a huge website. At the time of writing, it has just over 303,250 pages, almost none of which output a Last-Modified header.
Now that is all changing. In my beta website, I’m almost completed the process of implementing Last-Modified and ETag headers to each and every one of my webpages.
So far, I have the following pages left to alter:
- The main page – timestamp of latest commit
- The commits page – timestamp of latest commit
- New ports – timestamp of newest port
- List of Categories – timestamp of newest port
- Unrefreshed Ports – ?
- Security Notice page – outdated now that we have VuXML
- The security notice pages – ditto?
- The news feed – timestamp of latest commit
- VuXML pages – timestamp of latest VuXML commit
- The side bar – timestamp of latest commit
- The graphs – hourly? Date of the graph?
Hopefully I’ll be able to finish the above off within the next week or so.