Để bạn có một cuốn "cẩm nang" thực chiến hoàn chỉnh nhất, tui đã tổng hợp tất cả các loại URL, tên miền và dịch vụ từ cơ bản đến nâng cao của hệ sinh thái GitHub.

Dưới đây là bảng thống kê chi tiết từ tên gọi, mục đích, giới hạn kỹ thuật (Rate Limit/Quota) cho đến các điểm hạn chế/bẫy thực tế mà bạn chắc chắn sẽ đụng phải khi deploy dự án thực tế.

Bảng Thống Kê Chi Tiết Giới Hạn & Hạn Chế Thực Tế Hệ Sinh Thái GitHub

Tên miền / URL Giải thích chi tiết Giới hạn kỹ thuật (Miễn phí) Điểm hạn chế & "Bẫy" thực tế
github.com Giao diện Web chính thức dùng để quản lý mã nguồn, Pull Request, Issue, và tương tác cộng đồng. • Không giới hạn lượt xem.

• Giới hạn kích thước file đơn lẻ khi push bằng Git: Tối đa 100MB (từ 50MB sẽ bị cảnh báo). | • Không lưu được file lớn: Nếu bạn cố push file dữ liệu nặng (như database .sqlite, file video, model AI), Git sẽ từ chối. Phải dùng Git LFS (Large File Storage) nhưng dung lượng LFS miễn phí rất ít (chỉ 1GB). | | api.github.com | REST / GraphQL API để các ứng dụng bên thứ ba truy xuất dữ liệu từ GitHub dưới dạng JSON. | • Không xác thực: 60 request/giờ (tính theo IP).

Có Token (PAT): 5,000 request/giờ.

GitHub Enterprise: 15,000 request/giờ. | • Dễ bị block IP hàng loạt: Nếu bạn deploy ứng dụng Client-side (như React/Flutter) trực tiếp gọi API này bằng IP của user mà không có token, user sẽ nhanh chóng bị lỗi 403 Rate Limit.

Rò rỉ Token: Nếu bạn nhúng PAT (Personal Access Token) trực tiếp vào code Client-side để nâng giới hạn lên 5,000, kẻ xấu sẽ quét được và chiếm quyền điều khiển tài khoản GitHub của bạn. | | raw.githubusercontent.com | Đường dẫn tải file thô (text/binary) trực tiếp từ các thư mục trong repository. | Không công bố con số cụ thể, nhưng sẽ chặn tự động nếu phát hiện lưu lượng truy cập tăng đột biến (Spike). | • Không có MIME Type chuẩn: File CSS/JS khi tải từ đây sẽ trả về header Content-Type: text/plain. Điều này khiến các trình duyệt hiện đại chặn không cho chạy (lỗi CORS/Mime-type), nên không thể dùng làm link nhúng trực tiếp cho website.

Bị cache nặng: Khi bạn update code ở GitHub, link raw thường mất vài phút đến vài tiếng mới cập nhật nội dung mới ở phía Client. | | cdn.jsdelivr.net/gh/ | CDN bên thứ ba tự động lưu cache và phân phối file từ GitHub ra toàn cầu. | • Không giới hạn băng thông.

• Giới hạn kích thước file đơn lẻ: Tối đa 20MB. | • Phụ thuộc bên thứ ba: Nếu hệ thống của jsDelivr gặp sự cố hoặc bị chặn ở một số quốc gia (ví dụ như tường lửa quốc gia chặn), website của bạn sẽ lập tức bị mất định dạng (mất CSS/JS).

Cache cực kỳ "lỳ lợm": Rất khó để xóa cache ngay lập tức khi bạn vừa sửa code, trừ khi bạn phải đánh số version mới (@v1.0.1) trên URL. | | github.io | Dịch vụ GitHub Pages dùng để lưu trữ và chạy trực tiếp các trang web tĩnh (HTML/CSS/JS). | • Dung lượng Repo web: Tối đa 1GB.

• Băng thông: Tối đa 100GB/tháng.

• Giới hạn build: 10 lần/giờ. | • Chỉ chạy được Web tĩnh: Hoàn toàn không chạy được các code Backend (NodeJS, Python, PHP) hay kết nối trực tiếp database dạng ghi.

Lộ mã nguồn: Bắt buộc Repo chứa web của bạn phải ở chế độ Public (nếu dùng tài khoản Free), đồng nghĩa với việc ai cũng có thể xem toàn bộ code frontend của bạn. | | gist.github.com | Dịch vụ chia sẻ nhanh các đoạn code ngắn (Snippets), cấu hình hoặc log lỗi. | Giới hạn số lượng Gist được tạo mỗi ngày (thuật toán tự động chống spam của GitHub). | • Không có cấu trúc thư mục: Không phù hợp cho các dự án có nhiều file liên kết với nhau.

Tính bảo mật yếu: Gist ở chế độ "Secret" thực chất không hề bảo mật. Nó chỉ không xuất hiện trên công cụ tìm kiếm, nhưng bất kỳ ai có đường link đều có thể truy cập và xem được code bên trong. | | [github.com/features/actions](<https://github.com/features/actions>) | Hệ thống tự động hóa CI/CD để tự động build, test và deploy dự án. | • Repo Public: Miễn phí hoàn toàn.

Repo Private: Miễn phí 2,000 phút/tháng (máy ảo Linux). | • Nghẽn hàng đợi (Queue): Vào giờ cao điểm, các tác vụ build của bạn có thể phải xếp hàng chờ rất lâu mới được chạy.

Tốn phút vô ích: Nếu bạn viết script test bị lặp vô hạn hoặc cấu hình sai, máy ảo sẽ chạy liên tục cho đến khi hết sạch 2,000 phút miễn phí của tháng đó trong vài tiếng. | | ghcr.io (GitHub Container Registry) | Nơi lưu trữ các Docker Image và các loại Package khác (npm, NuGet...). | • Dung lượng lưu trữ: 500MB miễn phí.

• Băng thông tải xuống: 1GB/tháng. | • Băng thông quá ít: Giới hạn 1GB băng thông tải xuống cực kỳ dễ hết nếu bạn cài đặt luồng CI/CD tự động kéo (pull) Docker Image về server mỗi lần deploy.

Phát sinh chi phí ngầm: Nếu vượt quá 500MB lưu trữ, hệ thống sẽ tự động khóa hoặc yêu cầu bạn nâng cấp gói trả phí để tiếp tục đẩy package mới lên. | | copilot.github.com | Trợ lý lập trình trí tuệ nhân tạo (AI Assistant) tích hợp trong IDE. | Giới hạn cửa sổ ngữ cảnh (Context Window) khoảng 4,000 - 8,000 tokens tùy model. | • Giới hạn bộ nhớ: Copilot không thể "đọc" và hiểu toàn bộ cấu trúc của một dự án siêu lớn cùng một lúc. Nó chỉ đọc được file bạn đang mở và một vài file liên quan trực tiếp xung quanh.

Code rác (Hallucination): Đôi khi AI tự chế ra các hàm hoặc thư viện không hề tồn tại, đòi hỏi bạn phải có kinh nghiệm để kiểm tra lại trước khi nhấn Tab. | | avatars.githubusercontent.com | Hệ thống lưu trữ hình ảnh đại diện (avatar) của toàn bộ user trên GitHub. | Phụ thuộc vào giới hạn chung của hệ thống phân phối ảnh của GitHub. | • Không thể tùy biến kích thước tùy ý: Trình duyệt buộc phải tải đúng file ảnh được lưu trên server, nếu user upload ảnh gốc quá nặng, website của bạn load avatar sẽ bị chậm (dù GitHub có hỗ trợ tham số resize ?s=size nhưng hoạt động đôi lúc không ổn định). |

Lời khuyên thực chiến khi thiết kế hệ thống có dùng GitHub:

  1. Khi làm App/Web cá nhân (React, Flutter, NextJS):

    Nếu cần lưu trữ database nhẹ hoặc file cấu hình, đừng bao giờ gọi trực tiếp đến raw.githubusercontent.com hay api.github.com trực tiếp từ client của user. Hãy tận dụng một dịch vụ Backend-as-a-Service (như Supabase hay Firebase) để làm cầu nối trung gian nhằm tránh bị dính Rate Limit và lộ Token bảo mật.

  2. Khi dùng GitHub làm CDN chứa file tĩnh (như ảnh, script):

    Luôn luôn thông qua jsDelivr (cdn.jsdelivr.net/gh/) thay vì dùng link raw. Cú pháp chuẩn để tránh bị cache cũ hành hạ là chỉ định rõ tag hoặc release branch:

    [<https://cdn.jsdelivr.net/gh/user/[email protected]/file.js>](<https://cdn.jsdelivr.net/gh/user/[email protected]/file.js>) (thay vì dùng @main hay @master).

Cuốn cẩm nang này đã bao quát từ những cái nhỏ nhất đến những dịch vụ doanh nghiệp. Bạn có đang chuẩn bị thiết kế một luồng hệ thống nào sử dụng các dịch vụ này không, chia sẻ với tui để tui góp ý tối ưu cấu trúc cho nhé!