On-demand wiki-to-html / pre-render wiki-to-html

นั่งดูผลจาก ab (ApacheBench) แล้วสลดหน่อยๆ

$ ab -n 50 -c 10 http://kitty.in.th/
...
Total transferred:      696250 bytes
HTML transferred:       688300 bytes
Requests per second:    6.02 [#/sec] (mean)
...
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   20  47.0      0     151
Processing:  1107 1586 467.3   1356    2586
Waiting:     1069 1551 467.5   1322    2546
Total:       1258 1606 469.7   1359    2623

Percentage of the requests served within a certain time (ms)
  50%   1359
  66%   1444
  75%   1513
  80%   2380
  90%   2577
  95%   2586
  98%   2623
  99%   2623
 100%   2623 (longest request)

หลักๆ เป็นเพราะ wiki-to-html มัน render on-demand (เอา wiki text มา render ทุกครั้งที่มี request) มันก็ช้าอะดี เลยแก้ code ใหม่เป็นแบบ pre-render HTML เก็บลงใน database แทนการ ผลที่ได้ ..

$ ab -n 50 -c 10 http://kitty.in.th/
...
Total transferred:      696250 bytes
HTML transferred:       688300 bytes
Requests per second:    35.25 [#/sec] (mean)
...
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   26  52.5      0     210
Processing:    41  248  80.5    247     414
Waiting:        6  211  80.4    215     381
Total:        200  274  65.6    253     454

Percentage of the requests served within a certain time (ms)
  50%    253
  66%    268
  75%    278
  80%    353
  90%    399
  95%    414
  98%    454
  99%    454
 100%    454 (longest request)

6.03 requests / sec กับ 35.25 requests / sec. ..

space-time tradeoff = เร็วขึ้นเกือบ 6 เท่า แลกกับพื้นที่เก็บอีกเท่ากว่าๆ .. :)