CirruxCache: speeds up your HTTP app using Google Appengine as a CDN
By shad on Friday, October 30 2009, 22:05 - Permalink
It is a great moment, for the first time since I have started to work at Zoomorama, I have just released as open-source an important part of our server platform.
I previously explained how to use Google AppEngine as a Content Delivery Network (CDN). CirruxCache project concretizes this idea. I released the first version based as the one we use in production.
Here is the features it currently supports:
- honor Cache-Control
- cache TTL override
- several POP (Point Of Presence) configuration mapped on custom base-url
- ignore query string
- POST forwarding
- expired entries garbage collection
- extensibility
CirruxCache is not documented at the moment even if you would be able to use it after reading the comments in the app.py file. I'll document this app in the next few days, but if you need more documentation, don't hesitate to contact me.
The project website.
Comments
Hi,
Can you please write about "how to install your app on google app engine" ?
Thanks
Sure, it will documented in details in few days on this page: http://code.google.com/p/cirruxcach...
For the moment you can find how to configure it.
That's it, I hope the new documentation page will help you: http://code.google.com/p/cirruxcach...
Hello,
Thank you for this excellent project. So far, I have managed to start the local testing server and get it uploaded to my App account. Unfortunetly, I'm getting 404 errors when I try to use it.
If I understand correctly, this is supposed to work (if correctly configured) : http://myappname.appspot.com/www/bl... => http://www.domain.tld/blabla.gif
I'm right ?
Thank you.
In this case, and according to my documentation (maybe it needs more details ?), each requests on "http://myappname.appspot.com/www/bl..." will be done on "http://www.domain.tld/www/blabla.gi...", that's why you got a 404. This is to make the url mapping much easier.
For example, if I need to cache all my website images, I will configure a PoP named "Images", mapped to "/images/". Because I'm a nice guy and I put all of my images in the "images" directory
You need to keep the same mapping as your website. In your case, you will need a PoP mapped on the root url "/". That's possible but it is not so clean.
Is it helpful for you ?
@Antoine:
A little modification to make your example working:
change the url mapping to:
urls =
(
'/www(/.*)', Www
...
I'll write some doc soon to explain how to manipulate URLs.
AH ! Thank you. Now it works ! You should write somewhere on your wiki this info :).
Your writing is very elegant, very vivid and lively, I really like you, wish you continued to write better articles, I will often try to concern, oh
It's great that you guys have released this work as open source. I'm glad I stumbled on this before I started writing one for my own sites!
Thanks again.
Rob
Great work, I want to Know How you make this cdn.shad.cc?
"Virtual Hosting
All of this urls are mapped to the "default" virtual host. It is a kind of catch-all. But you can specify other mapping such as:
urls['cdn.domain.tld'] = {
'(/.*)', 'Blog'
}
This settings will bind the PoP named "Blog" to all url which are accessed through the "cdn.domain.tld" virtual host."
Doesn't work for me!
Thanks a lot
Hi,
what do you mean by "it does not work"? Give me your whole configuration (app.py) by email.
Hello,
I mean the final step "map a bucket to my own subdomain" cdn.domain.tld
I emailed you with app.py configuration
Thanks for your help