URL: http://m.fwckungfu.com

My first YSlow Grade A (100)! Just put in the remaining necessary cache headers on my kungfu club mobile site and I ran a YSlow! test on it and it got a 100! I've never had that before.

Admittedly, this is like cheating since the site is for mobile use it's kept very very simple and has no external dependencies so no need for a CDN. Getting a Grade A on YSlow! is very hard if the site needs to really blink. This one is built dedicated for small mobile phone screens on slow connections. I think now the bottleneck isn't in the rendering but in the connection latency for the remote database.

It also got a 4.9 (max 5.0) on ready.mobi which is the highest I've ever achieved there.

This site was developed in Django, fronted by Nginx with a remote MySQL connection to a server far away. Because of that connection I really had to get the caching right to avoid excessive SQL calls. The Debug Toolbar was instrumental to make that happen. I also used this snippet to allow me to use inline CSS and have it whitespace optimized.

Django's templates are really simplistic. I couldn't work out a way to specify cache unique keys depending on parameters so I had to do all the caching in the views.

Comments

Post your own comment
Jason Lee

now is 98%,ha ha

Peter Bengtsson

Very funny :)
It's still 100% thank you very much

Nick

if you install memcached and turn on Django cache with memcached you'll get fastest site ever!

Peter Bengtsson

I will experiment with that once time allows. A problem is that only a small number of URLs can be memcached because cookies are set and read.

steffen

lol, a yslow grade for a site with just text links.

Peter Bengtsson

I know. It's a bit silly. Goes to show how hard it is to "impress" YSlow

Your email will never ever be published.

Previous:
DianeDancesToHell.jpg December 16, 2008
Next:
Towel dog December 17, 2008
Related by category:
Native connection pooling in Django 5 with PostgreSQL June 25, 2025 Django
Combining Django signals with in-memory LRU cache August 9, 2025 Django
How to avoid a count query in Django if you can February 14, 2024 Django
How to have default/initial values in a Django form that is bound and rendered January 10, 2020 Django
Related by keyword:
Be very careful with your add_header in Nginx! You might make your site insecure February 11, 2018 Linux, Web development, Nginx
How I simulate a CDN with Nginx May 15, 2019 Python, Nginx
Update to speed comparison for Redis vs PostgreSQL storing blobs of JSON September 30, 2019 Python, Django, PostgreSQL, Redis, Nginx, Web Performance
ssl_session_cache in Nginx and the ab benchmark December 31, 2010 Linux, DoneCal