Cloudflare CDN, DNS và Cache

Cloudflare, Inc. là một công ty Hoa Kỳ cung cấp mạng phân phối nội dung (CDN), dịch vụ bảo mật Internet (security) và các dịch vụ phân phối máy chủ tên miền (DNS), đứng giữa khách truy cập và nhà cung cấp dịch vụ lưu trữ của người dùng Cloudflare, hoạt động như một reverse proxy cho các trang web. Cloudflare có trụ sở tại San Francisco, California, với các văn phòng bổ sung ở London, Singapore, Champaign, Austin, Boston và Washington, D.C

Cloudflare với CDN, DNS và Cache miễn phí

Cloudflare cung cấp hiệu suất và bảo mật miễn phí cho bất kỳ trang web nào (warez, crack? thấy xài láng). Nói sao ta, thế giới có khoảng 25-30% trang web sử dụng WordPress, thì trong cái 25-30% trang web đó, có khoảng ~ 10% là đang dùng Cloudflare :]]

Hiện tại có hơn 6.000.000 trang web đang sử dụng Cloudflare.  Việc cài đặt cũng vô cùng đơn giản, không phải dùng phần cứng, cũng không phải dùng phần mềm, đơn giản là chỉ cần thay đổi DNS, mất khoảng 3-5 phút đăng ký là xong.

Thật sự thì trước đây rất nhiều lần mình từng dùng qua Cloudflare, họ có một dịch vụ CDN, DNS, Security gần như đứng đầu thế giới ở tầm FREE cho hệ thống website online, tuy việc cài đặt chỉ là trỏ DNS sang dịch vụ của họ, nhưng mình cứ có cảm giác khó chịu, xử lý các vấn đề liên quan tới kĩ thuật của họ khá lằng nhằng, nói chung thì thường người ta hay dùng CDN, DNS của Cloudflare, ở thời điểm viết bài này, họ có khoảng 108 datacenter trên khắp thế giới, cơ sở hạ tầng thì phải nói là khủng khiếp

Bangkok, TH
Chennai, IN
Colombo, LK
Hong Kong
Kuala Lumpur, MY
Manila, PH
Mumbai, IN
New Delhi, IN
Osaka, JP
Seoul, KR
Singapore, SG
Taipei, TW
Tokyo, JP
Yerevan, AM

Gần nhất thì có server tại Hong Kong, Bangkok, Singapore thành ra nếu bạn dùng thêm Cloudflare cho CDN và DNS sẽ tăng tốc rất nhiều cho các truy cập từ Việt Nam, cả thời gian cho DNS, TTFB lẫn tổng thời gian load site, tuy thế trước đây, phần nhiều ta chỉ dùng DNS để tăng tốc cho DNS và ẩn IP thực của webserver nhằm tránh các cuộc tấn công và report :]] + CDN cho các file tĩnh như hình ảnh, css, js … tốc độ có cải thiện, nhưng chỉ phần nào, ngày xưa Cloudflare rất hay bị tình trạng là server bạn đang bình thường, nhưng Cloudflare thông báo là downtime, làm mất rất nhiều traffic, rất nhiều site to, traffic lớn phải bỏ, không dùng Cloudflare dù các lợi ích lo lớn nó mang lại, nói sao nói, thời buổi bây giờ thì không gì khó chịu bằng downtime cả, nhất là downtime không phải do bạn, mà lỗi ở Cloudflare :))

Bây giờ các dịch vụ hosting, vps, server location tại Sing, Japan, Hong Kong mọc lên như nấm, giá thì rẻ bèo, thành ra số người dùng tới Cloudflare tại Việt Nam cũng ít dần đi :]]

DNS

DNS FREE của Cloudflare được đánh giá là số 1 thế giới về hiệu năng và thời gian uptime, trung bình ~ 99.99%, thậm chí so với nhiều dịch vụ Premium DNS phọt phẹt như NameCheap, GoDaddy thì Cloudflare đập chết ăn thịt luôn, trừ vài dịch vụ Premium DNS như DNS Made Easy có thể hơn nó về hiệu năng và thời gian uptime

Trung bình bạn tốn khoảng $30/ 1 năm cho dịch vụ Premium DNS, có cần thiết không, khi hiệu năng cải thiện thường chỉ là 4-5 ms, thậm chí, trong vài trường hợp cá biệt, như chúng ta sống ở Việt Nam ta không thể nhìn vào cái bảng đánh giá của thế giới được, có thể 1 dịch vụ nào đó họ tốt, nhưng tốt cho US, Euro thôi, còn location cụ thể kiểu Việt Nam thì lại khác :]]

DNS của Vultr có thể nhiều bạn chê không thèm dùng, chứ thực tế mình dùng, thì truy cập tại Việt Nam, DNS chỉ ~30 ms, DNS Made Easy họ được đánh giá rất cao ở tầm thế giới, tuy thế, khi mình dùng thử, thì truy cập tại Việt Nam thậm chí còn không tốt bằng các dịch vụ FREE của Cloudflare hay Vultr 😀

Thuần túy Việt Nam, hoặc các nước châu Á, các nhân mình recommend dùng DNS của Cloudflare hoặc Vultr, để tận dụng thêm các dịch vụ khác của Cloudflare như CDN, Cache, Security thì hiện tại nên dùng Cloudflare 😀

Đăng kí gói FREE thì Cloudflare thường họ cho 2 DNS như hình trên (trả tiền thì hình như được 4 nameserver), nếu kĩ tính, bạn có thể dùng thêm dịch vụ kiểm tra tốc độ DNS từ SolveDNS để xem nameserver nào nhanh hơn, vì thông thường nameserver nó sẽ chạy tuần tự ns1 -> ns2 -> ns3 -> ns4, cái nào lỗi nó tự động chuyển sang cái khác

art.ns.cloudflare.com khi kiểm tra thì mình thấy hiệu năng và uptime ổn hơn dãy fay.ns.cloudflare.com 😀 thành ra mình sẽ điền art.ns.cloudflare.com vào nameserver 1, fay.ns.cloudflare.com điền vào nameserver 2 😀 (cái này ai kĩ thì làm thôi, vì thật ra nói là nó lệch nhưng toàn theo ms, 4-5ms không cảm nhận nổi đâu :D)

Tiếp theo bạn vào trang quản trị domain của Cloudflare, Tab Overview -> Advanced -> Click vào Pause Website

Việc này xác định chắc chắn là bạn không dùng kèm bất cứ dịch vụ nào khác trừ DNS của Cloudflare 😀

Bạn có thể config sẵn cấu hình sử dụng CDN, Cache như hướng dẫn bên dưới, khi nào cần dùng thì chỉ việc ấn vào Resume là xong, không muốn dùng thì lại tiếp tục ấn vào Pause, rất nhanh và tiện

Để kiểm tra việc cập nhập DNS, bạn có thể dùng dịch vụ của Who.Is, họ kiểm tra rất nhanh, gần như khi bạn thay đổi từ trang quản trị domain, quay sang Who.Is kiểm tra là đã thấy có sự thay đổi, các trang whois khác thường chậm hơn

Vậy là xong, bạn đã tận dụng được hệ thống FREE DNS gần như là tốt nhất thế giới hiện nay mà không gặp thêm bất cứ rắc rối nào từ các dịch vụ đi kèm của Cloudflare 😛

CDN và Cache

Cá nhân mình thì đang dùng cái gói Google Cloud Platform – Compute Engine Always Free, nó chỉ cho băng thông đi quốc tế có 1GB/ tháng, mà mình thì muốn tận dụng hết cỡ cái gói này :]] thành ra quay lại coi thèng Cloudflare xem thế nào 😀 tình cờ phát hiện ra là giờ họ cho cache cả file HTML nữa :]]

Mình đã thử rất nhiều plugin cache cho WordPress, chúng đều rất hiệu quả và gần như là đã bỏ qua bước xử lý PHP và MySQL rồi, server nhẹ hều, tuy thế tổng thể khi khách vào site, nó phải phải load cái file html đó từ server về tới máy khách, mà server US thì nói sao nói, vẫn không thể nào nhanh nhất cho các truy cập từ Việt Nam được, đấy là còn chưa tính tới khi đứt cáp, băng thông đi quốc tế lê lết thì khỏi nói luôn 😛

Sau khi biết Cloudflare đã có cache cho file html, mình bắt đầu thử nghiệm, và kết quả thật bất ngờ, nếu không muốn nói là bật ngửa 😀

Thử bài test với 10.000 truy cập trong 1 phút từ loader.io, TTFB trung bình là … 5, thấp nhất là 4 và cao nhất chỉ 183 ms và không có bất cứ kết nối nào có lỗi, một con số khiến tất cả các dịch vụ hosting trên thế giới té ngửa, tất nhiên đây là do server test của loader.io nó gần với server của Cloudflare nên mới được con số hoang đường như thế

Do cache thành ra các truy cập đều thông qua Cloudflare, server không phải làm bất cứ 1 cái gì 😀 load đâu đó < 1% =))

Thử một bài test từ Pingdom, load time 88 ms từ lần truy cập thứ 2

Thử với GTmetrix, load time 235ms từ lần truy cập thứ 2

Thử với dotcom-monitor, check khoảng 16 location 😀 speed nói chung tính theo ms thôi =))

Thử trực tiếp khi duyệt website tại Việt Nam vào 1 link bài viết cụ thể TTFB ~55ms 😀 còn thời gian load xong trang web thì gần như click phát thấy xong, nói chung là xé cmn gió =))

Thử ping

Thử trace 

Thật sự thuần túy tốc độ và hiệu năng cả về lý thuyết và thực tế không chê được cái gì, không khác là mấy so với server tại Việt Nam cả, đặc biệt là nó FREE hoàn toàn, bạn không tốn một đồng nào cả 😀

Điểm trừ nếu bắt bẻ thì họ dùng thêm 1 cái cookie là __cfduid, khiến cho điểm ở các bài test như Pingdom, GTmetrix không đạt được 100 thôi hé ^_^

Cách cài đặt:

Để tài đặt thì đầu tiên bạn nên gỡ tất cả các plugin cache ra, như WP Super Cache, W3 Total Cache, WP Rocket, WP Fastest Cache, Comet Cache, Cache Enabler

Bước 1: Download Plugin Cloudflare từ WordPress 
(hiện tại mình đang dùng SuperSonic, họ viết tối ưu và tốt hơn cái plugin Cloudflare tự viết hé)

Automatic Cache Management chọn ON

Bước 2: Setting tại Website Của Cloudflare

Tab Caching phần Browser Cache Expiration chọn “Respect Existing Headers

Tab Page Rules, tạo 3 rule với cấu trúc và thứ tự 1 -> 2 -> 3 như thế

Rule 1
bibica.review/*preview=true* chọn giá trị Cache Level là Bypass 

Trong đó *preview=true* là trang để bạn xem trước bài viết, nên bypass (nghĩa là không cache), không thì khi xem trước bài viết trang nào cũng là 1 trang

Rule 2
*bibica.review/wp-admin/* chọn giá trị Cache Level là Bypass (nghĩa là không cache)

Trong đó wp-admin là trang admin rồi, nên bypass (nghĩa là không cache), tuy thế, Cloudflare chỉ cho free 3 rule, nên nếu trong trường hợp cần bypass thêm ở trang nào thì có thể bỏ rule 2 ở phần admin ra cũng được, vì trang này vào cần login :]] Nói chung cái này không khuyến khích lắm, vì rất dễ loạn cache trong wp admin

Rule 3
*bibica.review/* chọn giá trị Cache Level là Cache Everything, Always Online: On, Edge Cache TTL: a month

Trong đó Cache Everything nghĩa là cache mọi thứ (do nó là rule 3, nên nó sau wp-admin và *preview=true* được chọn ở rule 1 và 2 bên trên)
Always Online: On nghĩa là luôn online, kể cả trang có sập thì Cloudflare vẫn lấy cache cũ ra để giúp trang chạy
Edge Cache TTL: a month, dòng này là thời gian lưu cache trên server của Cloudflare, nên chọn giá trị cao nhất là 1 tháng

Để dễ hiểu là nếu bạn set 3 rules đúng như mình làm ở trên, thì site bạn sẽ được cache mọi trang (trừ phần wp-admin và *preview=true*)

Nếu bạn có dùng thêm SSL cho site thì tab Crypto, phần SSL chọn FULL

Từ lúc này thì Cloudflare sẽ tự cache tất cả các thứ trên site của bạn, khi có thay đổi bài viết mới hoặc comment nó sẽ tự biết làm mới, về bài viết thì khi viết hay sửa bài bạn có thể tự xóa cache trong plugin Cloudflare ở bước 1

Về nguyên tắc auto clear cache của plugin Cloudflare

Nó sẽ chỉ xóa cache ở ngay trang có sự thay đổi, chứ không xóa các trang liên quan tới trang đó, cụ thể nếu bạn có tiêu đề bài viết, nội dung bài viết, khi bạn sửa tiêu đề bài viết, thì ở bài viết đó sẽ được tự xóa cache, còn nếu bạn dùng thêm các widget hiện tên các bài viết thì các widget đó vẫn để tên cũ

Comment cũng thế, nó chỉ tự xóa cache ngay bài có comment đó, còn các trang khác có hiện comment nó sẽ không xóa, vẫn câu nói cũ 😀 bạn là người quản trị, bạn hãy …. tự xóa :]]

Thật ra ở đây Cloudflare chỉ cho một cái page rule tối thiểu để dùng, gói trả tiền thì mới được add thêm cookie nào không cache, trong đó “wordpress_logged_in_|wp-postpass_|wptouch_switch_toggle|comment_author_|comment_author_email_” là các cookie tối thiểu để blog có thể chạy mà không gặp vấn đề về cache, tiếc là cái gói … $200 / tháng mới có tùy chọn này :]]

Nói chung là phải dùng gói trả tiền thì mới thấy tùy chọn set cookie, thành ra mình cũng chưa rõ nó có hoạt động hoàn hảo không, vì nếu có thêm tùy chọn cookie thì gần như bạn có thể dùng Cloudflare thay cho tất cả các plugin cache hiện nay, đơn giản vì nó vô đối cmnlr 😀

Điểm mạnh khi dùng các dịch vụ như Cloudflare là security, chống các cuộc tấn công, bảo mật thêm cho site, và đặc biệt là tính năng Always Online, kể cả trong trường hợp hosting sập thì nó vẫn có thể lôi bài cache cũ ra để hiện lên, bạn sẽ không bị mất traffic 😀

Về nhu cầu sử dụng, thì mình khuyến khích dùng DNS của họ, đây là dịch vụ mình nghĩ ai cũng có thể dùng được, chỉ cần Pause hết các tính năng khác là xong, không có bất cứ lỗi hay vấn đề gì cả

CDN và Cache thì tùy nhu cầu, thực ra với các trang dạng tư liệu, đọc truyện online, thuần túy views thì hệ thống cache của Cloudflare phải nói là tuyệt vời, tốc độ đỉnh của đỉnh luôn, tất cả các lần mình thử đều ngợp vì cái tốc độ điên loạn của nó, tối wa thử lại thì thấy ping và TTFB chỉ còn 2x, ping 2x thì phải nói là một sự khủng khiếp của cơ sở hạ tầng mạng rồi đấy, mình thử gần như tất cả các dịch vụ CDN và server có tiếng như Akamai, WordPress, Google, IBM …. thì trừ server tại Việt Nam, thấp nhất cũng chỉ 3x là kịch, Cloudflare không có server tại Việt Nam mà xuống tới 2x :]] Tất nhiên, nếu dùng được cả DNS, CDN lẫn Cache thì quá tốt rồi, thuần túy tốc độ và độ chịu tải gần như vô đối, tiếc là gói này sơ sơ $200 / tháng 😛 thành ra ở tầm FREE dùng DNS và CDN là đủ, cũng rất nhanh rồi 😛

Nói chung là bạn cứ config sẵn các thứ như trong bài, xong khi nào đứt cáp quốc tế, hay chập chờn thì Resume bật Cache cho nó chạy là được 😀

Hiện tại nếu bạn còn thấy dòng này, nghĩa là mình đang sử dụng dịch vụ DNS và CDN từ Cloudflare 😀

Tất cả các thông số về thời gian load, DNS, SSL, TTFB đều giảm xuống đáng kể 😀

Về cơ bản mình tin chuyện các site to, traffic cao khi dùng CDN hay Cache bị Cloudflare “chơi bẩn” là có, kiểu host đang bình thường mà vào site thì cứ văng ra thông báo từ Cloudflare báo host sập, hay bị lỗi chặn 1 số truy cập là người thực 😛 Rất nhiều site phải bỏ chạy vì chuyện này, mình khá đồng tình chuyện này, tuy thế cách làm của Cloudflare nó hơi bựa thôi, phải chi họ làm những thông báo kiểu xài từ 50 GB hàng tháng trở lên thì phải đóng 1 số tiền nào đó, thế có phải rõ ràng không, đằng này họ cứ im ỉm rất khó chịu :]]

Tất nhiên, đây là chuyện từ những năm trước, và tình hình cụ thể là cái site này cũng rất bé, cả ngày chắc được 10-20 người vào :]] nên mình cũng chẳng quan trọng chuyện đó 😛 vấn đề hiện tại cơ sở hạ tầng của Cloudflare tuyệt vời cho Việt Nam, đúng yêu cầu thì mềnh dùng thôi 😛 

Update 02/01/2018:

Bổ sung chi tiết thêm phần DNS của Cloudflare, một dịch vụ mà mình nghĩ là nên dùng, vì nó rất tốt 😀

Update 04/01/2018:

Thêm một số rule cho phần tạo cache

Update 28/03/01/2018:

Bổ xung SuperSonic, thay thế cho plugin của Cloudflare tự viết

10 thoughts on “Cloudflare CDN, DNS và Cache

  1. https://docs.wp-rocket.me/article/18-using-wp-rocket-with-cloudflare

    wp rocket giờ hỗ trợ cloudflare rồi , họ còn đưa ra cấu hình tối ưu như sau

    Auto enable the optimal Cloudflare settings: WP Rocket automatically selects a pre-determined set of options within Cloudflare to improve the performance of your site:
    Set caching level to Agressive
    Activate minification
    Deactivate Rocket Loader
    Set browser cache to 1 month

    • Ah, WP Rocket mà bật cái tab Cloudflare đó thì chỉ cache file tĩnh (kiểu js, css, images) thôi, nói chung là cùi 😀 cái này thì từ lúc mình dùng WP Rocket đã có rồi

      Còn cái plugin Cloudflare hay SuperSonic hiện tại mình đang dùng là dành cho việc cache fullsite, nó khác rất xa

      Nói chung nếu bạn chạy shop online hoặc 1 vài plugin liên quan cần quản lý thêm qua cookies thì dùng WP Rocket và Rocket-Nginx là tuyệt vời nhất (demo thì thèng ngoirungdui.com mình đang dùng WP Rocket và Rocket-Nginx)

      Còn nếu là blog, thuần túy view, thì dùng SuperSonic Và CloudFlare để đảm bảo site có tốc độ load tốt nhất ở mọi nơi trên thế giới

  2. Xin hỏi thêm sao phải xóa các plugin cache như wp rocket. Tại vì mình thấy trong thống kê của cloudflare có khoảng 10% request là chưa cache.
    Khi cache trên cloudflare bị xóa, có người dùng truy cập vào trang bị xóa cache đó thì nó sẽ lấy thẳng từ trang mình.

    Như vậy mình muốn tối ưu hơn nên mình đang để bật wp rocket . mỗi khi có chỉnh sửa mình đều xóa cache wp rocket và chạy precache như vậy có tốt hơn k.

    Câu hỏi ở đâu là mình muốn hỏi tại sao có 10% request chưa cache , có phải đó là 10%user không thông qua cache cloudflare không.

  3. Tab Caching phần Browser Cache Expiration chọn “Respect Existing Headers“\

    Mình chưa hiểu tác dụng bạn có thể nói thêm được không.

    • Hmm, phần cache từ trình duyệt, nôm na là khi bạn vào 1 trang web, nó load các file tĩnh như hình ảnh, file css, js … về, xong mỗi lần load trang mới thì đọc cái file đó từ máy, thường nó sẽ giúp load nhanh hơn, có điều khi có sự thay đổi nào từ phía bạn, kiểu như sửa lại ảnh, hay các file css, js khách họ không thấy vì vẫn load các file cũ, thành ra thường mình không dùng cache từ trình duyệt 😀

      Với lại nếu bạn dùng Cloudflare cho CDN, DNS thì site thường cũng load xé gió rồi, không cần thiết phải dùng trình duyệt cache nữa, còn nhu cầu tới mức cache fullsite bằng Cloudflare thì khỏi phải bàn về speed lun :]]

    • Hơi tiếc vì Cloudflare gói FREE họ chỉ cho add thêm 3 rule vào, không đủ để dùng 😀

        • Nếu chỉ cache everything như trong bài, thì nó sẽ cache cả phần member, admin, bài post xem trước … nên thật sự hơi khó dùng nếu blog hay site có nhiều tương tác

          Ít nhất thì cũng phải bỏ phần *wp-admin* và *preview* ra, không nó cache đủ cả

          Nói chung nếu không quá thần thánh Cloudflare, cuồng giá trị TTFB thì dùng WP Rocket và Rocket-Nginx (http://bibica.net/wp-rocket-va-rocket-nginx/) là thừa rồi 😀

          Nó chịu nổi hơn 1000 client/1 giây mà site vẫn max speed

Leave a Comment