We have been making some under-the-hood changes to GroupServer with the goal of
improving its performance. It makes little change to the day-to-day running of
OGN, but it may be of interest to the development community.
First has been work on reducing the number of files that are used to render a
page. We have been using the Protopacked version of the Prototype and
Scriptaculous libraries, which combines all the code into one large file.
http://groups.google.com/group/prototype-core/browse_thread/thread/40e5815f5bc5fba9
In a similar vein, I have combined the small images, used in the CSS, into two
large files
http://groupserver.org/++resource++greenSprites.gif
http://onlinegroups.net/++resource++whiteFileSprites-20070810.png
The “CSS Sprites” technique is used to display the parts of the large images
that I want
http://www.alistapart.com/articles/sprites
By combining the many small files into a few large files the number of HTTP
requests is reduced, which has made a big change to the speed of the pages.
(The images themselves are from the excellent Silk collection by Fam Fam Fam
http://www.famfamfam.com/lab/icons/silk/ )
We have started to introduce cache-expiry dates in the far-future (such as
2010). To make this work correctly, we have started to introduce dates to the
end of the filenames, so the name changes whenever we alter the files. An
example of this is the name of the second image above ends. The new names also
have the added benefit of removing the need to shift-reload when we change the
core images and styles! This tweak, and reducing the number of files, was
suggested by the very helpful YSlow tool
http://developer.yahoo.com/yslow/
The other major direction of our optimisation work is tweaking the queries and
indexes in the relational database that is used to store all the information
about the posts, topic and email addresses. Richard is the guru of querying,
and has been doing amazing work getting the topic and post interfaces,
including searching, to work as fast as they do!
On Wed, 2007-08-15 at 15:45 +1200, Michael JasonSmith wrote:
> We have started to introduce cache-expiry dates in the far-future (such as
2010).
> To make this work correctly, we have started to introduce dates to the end of
the
> filenames, so the name changes whenever we alter the files. An example of
this is
> the name of the second image above ends. The new names also have the added
benefit
> of removing the need to shift-reload when we change the core images and
styles!
> This tweak, and reducing the number of files, was suggested by the very
helpful YSlow tool
> http://developer.yahoo.com/yslow/
An update on this one. As of tonight all image files and CSS on
onlinegroups and ABEL are using far-future expires. This is *not* a
groupserver feature as such -- I am using Apache to set the expires
headers in a blanket fashion.
It *is* a groupserver feature that we can support the setting of
far-future expires.
There are a couple of areas that we still need to do some work to make
sure they work well (these are for Mike's reference at the moment):
1) User images -- currently these do not have unique filenames when a
new file is uploaded, which means that if you change your user image, it
might not appear changed,
2) Generated PDF files -- we have PDF generation capability (only used
by a custom install of GroupServer at present), for which we are not
generating unique file names.
If anyone can spot other things that appear to not be refreshing, please
let us know as you spot them!