Như chúng ta biết khi truy cập 1 website thì việc tải toàn bộ thư viện javscript, css hay các static images( ảnh lâu ngày không update) tốn khá nhiều tài nguyên máy chủ cũng như thời gian chờ đợi của user, vì vậy việc chúng ta cache được các file này là một việc vô cùng hữu ích, và lựa chọn của tôi là Varnish.
Về cơ bản Varnish sẽ lưu trữ toàn bộ các file này vào trong RAM, sau đó khi có request từ người dùng thì Varnish sẽ trả lời ngay lập tức mà không cần request tới webserver, điều này vừa làm tăng tốc độ tải trang cho user vì Varnish dùng ram thật nên việc xử lý rất nhanh, ngoài ra vì không cần request tới webserver nên máy chủ của bạn cũng được giảm tải đi rất nhiều, đặc biệt là trong giờ cao điểm có đông người truy cập.

Trong ví dụ này, giả sử webserver của chúng ta đang chạy với port 8080. Để cấu hình cache toàn bộ các static files: hình ảnh, javascript, css. Với cấu hình Varnish dưới đây, chúng ta có thể giảm tải máy chủ xuống tới 50% trong giờ cao điểm với Varnish:

Sửa file /etc/varnish/default.vcl:

#
# varnish config
# caches all static files (images, js, css, txt, flash)
# but requests from backend dinamic content
#

# webserver
backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

# what files to cache
sub vcl_recv {
    if (req.url ~ "\.(png|gif|jpg|ico|txt|swf|css|js)$") {
        return(lookup);
    }
}

# strip the cookie before the image is inserted into cache
sub vcl_fetch {
    if (req.url ~ "\.(png|gif|jpg|swf|css|js)$") {
        unset beresp.http.set-cookie;
    }
}

# add response header to see if document was cached
sub vcl_deliver {
    if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
    } else {
        set resp.http.X-Cache = "MISS";
    }
}

Sau khi lưu và đóng lại, chúng ta cần khởi động lại varnish để cập nhật cấu hình:

sudo service varnish restart

Done!