Thiết kế web chuẩn seo

"Như vậy là bạn đã biết cách thiết lập các HTTP Header để cache các nội dung trang web. Bạn có thể hỏi, làm sao tôi biết Browser và Server trao đổi với nhau bằng những Headers nào?  Bạn hãy cài đặt addons Firefox có tên gọi 'Live HTTP Headers. Sau khi cài đặt, bạn chọn menu  Tools >> Live HTTP Headers để bật chương trình, sau đó truy cập vào bất cứ trang web nào để xem các headers. "

Web cache là gì

Với mỗi website, tốc độ tải là yếu tố quan trọng #1, bởi người dùng rất ghét phải chờ đợi. Bài viết này tôi hướng dẫn các bạn làm lập trình web cách thực hiện Cache các nội dung trang web bằng HTTP Headers, giúp trang web tải nhanh hơn, Server xử lý ít hơn.

CACHE LÀ GÌ ?

Cache là hành động lưu trữ các nội dung trên website để sử dụng lại cho những lần truy vấn tiếp theo. Ngày nay, các trình duyệt đều có thể lưu lại một bản sao mỗi hình ảnh (logo, banner,..), javascript (.js), stylesheets (.css), hoặc toàn bộ trang web. Lần sau, khi người dùng cần những nội dung này, trình duyệt sẽ sử dụng lại nội dung cũ, không cần phải kết nối tới máy chủ để tải nội dung.
Khi xem một trang web, số lần tải file càng ít thì tốc độ càng nhanh, máy chủ càng ít phải xử lý.
Dưới đây là hình ảnh mô tả cách thức trình duyệt lấy 1 nội dung từ máy chủ.
Tối ưu tốc độ trang web với HTTP cache
  • Browser:  gửi yêu cầu lấy file index.html
  • Server:  tìm & đọc nội dung file
  • Server:  trả về nội dung file
  • Browser:  hiển thị nội dung
Theo cách này, nếu bạn refresh một trang web n lần thì sẽ có n lần Browser và Server phải xử lý công việc kể trên. Trong thực tế, rất nhiều file không thay đổi nội dung trong thời gian dài. Nếu một trang web có 10 file (html, ảnh, js, css,..) thì mỗi lần bạn bấm F5 thì Browser phải thực hiện 10 lần kết nối đến Server. Bạn hãy hình dung, nếu lúc đó website có 1.000 lượt truy cập đồng thời thì tốc độ tải trang web sẽ rất chậm.

WEB CACHE #1:  Last-Modified

Khi Server gửi nội dung về Browser thì kèm theo thuộc tính Last-Modified để xác định thời điểm sửa file (ví dụ: inet.png) lần cuối cùng.
Ví dụ: Last-modified: Wed, 16 Oct 2013 05:00:25 GMT+7
Lúc này, Browser biết được file inet.png được tạo ra ngày 16/10/2013. Lần sau khi cần tải lại file này, nó sẽ gửi yêu cầu đến Server kèm theo header  Last-Modifed. Server chỉ trả về nội dung nếu file đã được cập nhật.
tối ưu tốc độ tải trang web với HTTP cache
  • Browser:  Này ông! hãy gửi cho tôi file inet.png, nhưng chỉ gửi nội dung nếu file được cập nhật nội dung sau ngày 16/10/2013
  • Server: tìm file và kiểm tra thời điểm câp nhật cuối cùng
  • Server: Hey! bạn thật may mắn, file bạn đang có là bản cập nhật mới nhất  (304 Not Modified)
  • Browser: OK! tôi sẽ sử dụng nội dung đã được cache. 
Như vậy, Server chỉ gửi 1 dòng thông báo "Not Modified" mà không phải gửi lại nội dung file.

WEB CACHE #2:  ETag

Trong bước #1 vẫn còn một số vấn đề:  (1) Vẫn phải kết nối nhiều lần đến server, tại server phải xử lý thời gian cập nhật file, (2) Nếu đồng hồ trên server bị sai lệch thì nội dung file vẫn được tải xuống Browser.
Giải pháp #2 là sử dụng header ETag với giá trị là chuỗi số duy nhất cho tất cả các file trên server. Nó có thể là một mã Hash hay Footprint: mỗi file đều có footprint (dấu chân) duy nhất, nếu bạn thay đổi nội dung file (dù chỉ là 1 byte) thì footprint sẽ thay đổi.
Thay vì gửi cho Browser thời gian cập nhật lần cuối, Server sẽ gửi mã ETag. Browser sẽ lưu lại file kèm theo mã ETag. Lần sau khi cần tải lại file này, nó sẽ gửi yêu cầu đến Server kèm theo header ETag. Server chỉ trả về nội dung nếu file đã được cập nhật.
Tối ưu tốc độ tải trang web với HTTP Cache
  • Browser: Hãy gửi tôi file inet.png, nếu file đã thay đổi, mã etag 'ead145f'
  • Server:  Kiểm tra footprint của file inet.png
  • Server:  Hey file bạn yêu cầu chưa thay đổi nội dung (Not Modifed)
  • Browser: OK! tôi sẽ sử dụng nội dung đã được cache.
Ví dụ: mã HTML khi tải file style.css 
GET /style.css HTTP/1.1
Host: seomaster.vn
User-Agent: Mozilla/5.0 (Windows NT)Firefox/24.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://inet.vn/
Connection: keep-alive
If-None-Match: "inet-1331151434"
Cache-Control: max-age=0
----HTTP RESPONSE------------------
HTTP/1.1 304 Not Modified
Date: Wed, 16 Oct 2013 03:45:28 GMT+7
Server: iNET WebServer 1.3
Connection: Close
Etag: "inet-1331151434"

WEB CACHE  #3:  Expires

Cache theo cách #2 thì Browser vẫn phải kết nối nhiều lần đến Server để kiểm tra xem file có thay đổi nội dung. Thay vì để Browser hỏi nhiều lần, khi gửi file, Server sẽ gửi kèm header expires để thông báo rằng nội dung file sẽ không thay đổi cho đến thời điểm expires. Từ bây giờ đến lúc đó, bạn cứ lấy nội dung cache mà dùng, không phải phải hỏi nữa.
Expires: Wed, 16 Oct 2013 05:00:25 GMT+7
Tối ưu tốc độ tải trang web với HTTP cache
HTTP Caching - header Expires
Không có kết nối Browser - Server. Browser tự kiểm tra nếu file còn thời hạn thì sử dụng luôn nội dung đã được cache. Điều này sẽ làm giảm bớt công việc của Server - dành thời gian làm việc khác. 

WEB CACHE  #4:  Max-Age

Thông tin expires (ngày hết hạn) rất tuyệt vời, nhưng Browser phải liên tục tính toán thời gian. Giải pháp #4 là sử dụng header max-age - "file inet.png sẽ hết hạn trong 1 tuần kể từ hôm nay", đơn giản hơn so với việc sử dụng chính xác thời điểm hết hạn.
Cache-Control: public | private | no-cache, max-age = n 
Giá trị max-age được tính bằng giây,  1 giờ = 3600,  1 ngày = 86400. 
Public: file có thể được cache bởi proxy hoặc các máy chủ trung gian
Private: file có giá trị khác nhau cho từng người sử dụng. 
              Browser có thể cache, nhưng các proxy không được cache.
No-cache: Browser và Proxy không được cache file này.

KIỂM TRA TRẠNG THÁI CACHE

Như vậy là bạn đã biết cách thiết lập các HTTP Header để cache các nội dung trang web. Bạn có thể hỏi, làm sao tôi biết Browser và Server trao đổi với nhau bằng những Headers nào?  Bạn hãy cài đặt addons Firefox có tên gọi 'Live HTTP Headers. Sau khi cài đặt, bạn chọn menu  Tools >> Live HTTP Headers để bật chương trình, sau đó truy cập vào bất cứ trang web nào để xem các headers. 
Tối ưu tốc độ tải trang web với HTTP Cache

Live HTTPS Header

Ngoài ra, nếu bạn đã cài addons Web Developer thì có thể dùng luôn tính năng Network, bằng cách chọn menu: Tools >> Web Developers >> Network; Sau đó truy cập vào các trang web trên website để kiểm tra.
Tối ưu tốc độ tải trang web với HTTP Cache
  • Những file có trong danh sách là Browser có thực hiện kết nối tới Server
  • Những file có biểu tượng xanh sáng ở góc trái:  Server gửi dữ liệu về Browser.
  • Biểu tượng xám:  Server không gửi dữ liệu, chỉ thông báo Not Modified.
Chúc bạn thành công!
Như vậy là bạn đã biết cách thiết lập các HTTP Header để cache các nội dung trang web. Bạn có thể hỏi, làm sao tôi biết Browser và Server trao đổi với nhau bằng những Headers nào?  Bạn hãy cài đặt addons Firefox có tên gọi 39;Live HTTP Headers. Sau khi cài đặt, bạn chọn menu  Tools Live HTTP
Thiết kế web bán hàng
Thiết kế web bán hàng
Giải pháp thiết kế website bán hàng online mang đến hiệu quả vượt bậc không ngờ cho doanh nghiệp của bạn! Một website được thiết kế tốt quan trọng như thế nào? Bạn không bao giờ có được cơ hội thứ hai để tạo ấn tượng đầu tiên với khách hàng của bạn
Thiết kế web doanh nghiệp
Thiết kế web doanh nghiệp
Chúng tôi dùng sức mạnh Internet làm thay đổi doanh nghiệp bạn bằng một trang web giới thiệu doanh nghiệp, công ty chuyên nghiệp, thiết kế đẹp nhưng vẫn đáp ứng được các tiêu chuẩn seo khắt khe w3c, HTML5, PageSpeed Insights, AMP. Hướng dẫn đào tạo marketing seo miễn phí cho doanh nghiệp
Thiết kế web du lịch
Thiết kế web du lịch
Làm sao để có một trang web du lịch lên top 1 google? Làm sao bạn có thể tìm kiếm khách hàng du lịch từ internet. Một thiết kế web du lịch cơ bản sẽ không đảm bảo cho bạn điều này. Phải thiết kế website du lịch chuẩn seo chuẩn w3c, HTML5, PageSpeed Insights, AMP, thân thiện với mobile
Thiết kế web nhà đất
Thiết kế web nhà đất
Một thiết kế website bđs cần những gì để seo lên top 1 google? Làm sao để thiết kế web bất động sản, web bán dự án, web đăng tin bán nhà bán đất mang lại hiệu quả. Thiết kế web chuẩn seo giới thiệu đến khách hàng một thiết kế web chuyên nghiệp theo chuẩn w3c, HTML5, PageSpeed Insights, AMP
Thiết kế web bán thời trang
Thiết kế web bán thời trang
Thiết kế website bán hàng thời trang, quần áo online chuyên nghiệp chuẩn seo thiết kế thân thiện với các thiết bị di dộng theo tiêu chuẩn html5, W3C PageSpeed Insights...Thiết kế phiên bản web AMP chuyên biệt của google tạo lợi thế khi quảng cáo và seo web lên top 1 google
Thiết kế web nha khoa bệnh viện
Thiết kế web nha khoa bệnh viện
Bạn đang có một phòng khám nha khoa, phòng khám đa khoa, bệnh viện...Làm sao bệnh nhân của bạn biết đến bạn? Thiết kế một trang web nha khoa, phòng khám cơ bản sẽ là chưa đủ. Trang web phải chuẩn seo tối ưu hóa theo chuẩn w3c, thân thiện với mobile , HTML5, PageSpeed Insights, phiên bản AMP
Thiết kế website studio
Thiết kế website studio
Bạn có một studio chụp ảnh cưới đẹp, dịch vụ và tay nghề của bạn chuyên nghiệp. Làm sao bạn có nhiều khách hàng hơn? Giải pháp thiết kế website studio cửa hàng chụp ảnh cưới chuyên nghiệp của thiết kế web chuẩn seo sẽ hỗ trợ bạn tìm kiếm khách hàng một cách hiệu qua nhất bằng dịch vụ trọn gói
Thiết kế website trường học
Thiết kế website trường học
Làm sao để học sinh biết đến học trường mầm non cơ sở giáo dục đào tạo trung tâm ngoại ngữ trung tâm tin học. Giải pháp thiết kế website trường đại học trường mầm non cơ sở giáo dục đào tạo của thiết kế web chuẩn seo với các tiêu chuẩn mới w3c, HTML5,AMP, thân thiện với mobile, PageSpeed Insights
Thiết kế website nhà hàng
Thiết kế website nhà hàng
Khách hàng biết đến nhà hàng, khách sạn, resort, quán ăn...của bạn bằng cách nào? Làm sao để bạn có nhiều khách hàng và thường xuyên hơn. Giải pháp thiết kế website nhà hàng khách sạn resort quán ăn chuyên nghiệp với các tiêu chuẩn mới nhất w3c, AMP, HTML5, PageSpeed Insights cực kì hiệu quả
Thiết kế website khách sạn
Thiết kế website khách sạn
Một website khách sạn cần có những gì? Giới thiệu thông tin hình ảnh phòng của khách sạn không là chưa đủ. Thiết kế website khách sạn chuyên nghiệp cần phải có tính năng cho khách đặt phòng trực tiếp trên web, tích hợp phần mềm quản lý phòng khách sạn chuyên nghiệp tự động cập nhật tình trạng phòng
Thiết kế web cá nhân
Thiết kế web cá nhân
Bạn đã có những thông tin cần thiết cho một website cá nhân? Website được thiết kế đẹp mang đúng phong cách của chủ nhân, màu sắc thiết kế hợp tuổi, hợp phong thủy với chủ nhân. Phần quản trị web đơn giản dễ sử dụng và đều được tích hợp video hướng dẫn cách dùng
Thiết kế web tin tức
Thiết kế web tin tức
Thiết kế web tin tức thật đơn giản nhưng làm sao để trang web được nhiều người biết đến? Một thiết kế web tin tức chuẩn seo, w3c, HTML5, PageSpeed Insights, AMP chuyên nghiệp vẫn là chưa đủ, web còn cần có các tính năng cần thiết chuyên biệt để hỗ trợ seo biên tập nội dung dễ hơn
Thiết kế web