

Really Slow Site for Testing HTTP Caches. - 0x44
http://reallyslowsite.com/10000

======
chaosmachine
<http://reallyslowsite.com/-1>

Apparently time travel is out of the question.

------
StavrosK
<http://cache.historious.net/cached/662705/>

Your site just revealed a bug in historious, thank you!

------
edanm
Nice.

The "copyright" line is _really_ tiny. Your twitter usernames are there, and I
assume you want people to see them, so I'd make it larger.

~~~
carbocation
I rarely notice copyright lines. The fact that you did makes me suspect that
they succeeded.

~~~
StavrosK
In his defense, the page is three lines long, one of which is the copyright
line.

~~~
carbocation
If it's important to them, perhaps they could... A/B test this? :-)

~~~
StavrosK
Perhaps after reading two relevant articles :P I just posted a third,
<http://news.ycombinator.com/item?id=1824959>, but not on the same series.

------
mnutt
This is one of the things that node.js is really good at, and it's interesting
that the sample code on the front page of nodejs.org was pretty similar to
this app. Here's the rough equivalent in node:

    
    
      require('http').createServer(function (request, response) {
        response.writeHead(200, {'Content-Type': 'text/plain'});
        var time = Math.max(0, Math.min(60000, parseInt(request.url.slice(1)) || 0));
        setTimeout(function() { 
          response.end('This page load took ' + time + 'ms\n'); 
        }, time);
      }).listen(8124);
    

(They have since changed it, and I suspect that it was because new users were
confused as to why their supposedly "fast" server always took 2 seconds to
respond to requests)

(edit: code formatting)

~~~
vog
_> This is one of the things that node.js is really good at_

Why does every simple task motivate people to show some kind of "hello world"
code in their favorite language and framework?

This web service is just a tiny exercise that is easily realized with a few
lines in any language (even C or Bash) using any web server. In particular, I
don't see in how far this code demonstrates the strengths of node.js.

~~~
mnutt
Perhaps because, though Sinatra is actually one of my favorite frameworks, it
doesn't work very well for this. The author comments that it's limited to 10
seconds because each connection is handled by a blocking Thin. Eventmachine
could also solve this problem, in a similar amount of code.

And I was just pointing out that this happened to _be_ the official hello
world for node.js.

~~~
0x44
shmeedog wrote a server in eventlet that solves the blocking thin problem.

------
0x44
Whoops, the original implementation used microseconds it now uses seconds
(with a max of ten).

~~~
sathyabhat
Maximum's 10 seconds?

~~~
0x44
Yes, there are a limited number of thin processes running on the server and
they block (making them non-blocking is work for another day). The code's on
github, if you need a longer delay feel free to fork:
<http://github.com/rconradharris/reallyslowsite.com>

------
atuladhar
[http://github.com/rconradharris/reallyslowsite.com/blob/mast...](http://github.com/rconradharris/reallyslowsite.com/blob/master/server.rb#L13)

One of the "slower than" expressions has an unnecessary "than."

~~~
shmeedogg
Fixed, thanks!

------
jrockway
This site is slow :)

I don't know Ruby, but how does this work:

    
    
        get '/', :agent => /curl/ do
          (slow_thing, time) = slow_down(DEFAULT_SLEEP)
          "SLOWER THAN #{slow_ting}. Putting the brakes on for #{time} seconds.\n"
        end
    

It binds slow_thing and then references it as slow_ting (without the h) in the
interpolation? What?

It appears twice so it must be intentional?

~~~
shmeedogg
Oops, that's a typo in code that hasn't been deployed yet. Our regression
suite missed it ;-)

~~~
jrockway
Ah, makes sense, you just get the empty string instead of "turtles marching
through peanut butter".

I am used to Perl where your code won't compile if you reference an undefined
variable in a string interpolation.

------
bjonathan
Hello, I have no doubt that this tool is really usefull. But as a non techie I
dont understand the purpose. Can somebody explain me or refer me to an article
that can explain why test HTTP caches and what is it?

~~~
shmeedogg
reallyslowsite.com is designed to be a tool that developers can use to
simulate how their application responds to expensive HTTP requests.

You could use this, for example, to test that your mobile application is
properly caching HTTP requests (it would be noticeably slower, even with a
fast connection, because the request is guaranteed to take at least 2
seconds).

The specific use case I had in mind when I created it was testing the HTTP
caching that will be used internally by the OpenStack "glance" project.

