Sprint 115 · Trogiang.ai

Tốc độ tải trang Trogiang.ai

Lần mở đầu trang Báo cáo điểm danh giảm từ 39–50 giây xuống 2,6–3,4 giây; lần mở lại còn khoảng 1 giây. Bốn thay đổi đã chạy trên production. Phần định tuyến mạng và dung lượng JavaScript còn chờ xử lý.

Sprint
115
Trạng thái
Đã lên production
Sản phẩm
trogiang.ai
Cập nhật
03/11/2026
Lần mở đầu: 39–50 s → 2,6–3,4 s
Xuất xứ / Prompt / Giới hạn

Prompt. Ngày 03/11/2026: "sao tốc độ chậm thế, anh cần load under 1s https://trogiang.ai/report/attendance?plan=promax2".

Ai soạn. Trợ lý AI soạn tài liệu này từ các phép đo và thay đổi đã thực hiện ngày 03/11/2026; tài liệu dùng để đội thảo luận, chưa phải quyết định.

Nguồn. Đo bằng Playwright trên Chromium chạy không giao diện (headless), từ một đường truyền Viettel tại Việt Nam, trước và sau khi sửa trên cùng đường truyền. Hồ sơ CPU của một lần tải khi trình duyệt đã có bộ nhớ đệm. Thời gian kết nối đo bằng curl.

Giới hạn.

  • Bản thân đường truyền đo chậm và không ổn định: khoảng 1 MB/s, có lúc ngừng hẳn.
  • Số liệu lấy từ một địa điểm duy nhất.
  • Chưa có số liệu đo từ người dùng thật.
  • Dung lượng trước khi sửa tính theo dữ liệu chưa nén; dung lượng sau khi sửa tính theo dữ liệu đã nén khi truyền. Hai con số không so trực tiếp được.

Bốn thay đổi chỉ tác động tới thứ tự và thời điểm tải. Bố cục trang Báo cáo điểm danh giữ nguyên. Tab này mô tả giáo viên thấy gì trong lúc trang đang tải.

1 · Trình tự hiển thị khi mở trang03/11/2026

  1. 0,23 sMở /report/attendance?plan=promax2. Worker phía trước chuyển ngay sang /vi/report/attendance.
  2. 2,6–3,4 sNội dung điểm danh hiện ở lần mở đầu. Lần mở lại: 0,99–1,17 s. Bingo ở góc phải dưới là ảnh tĩnh.
  3. Trang tải xongThư viện Google API và đăng nhập Google bắt đầu nạp.
  4. Tải xong + 2,5 sTệp hoạt hình Bingo bắt đầu nạp. Đo được vào khoảng giây thứ 6.
  5. Hoạt hình sẵn sàngHoạt hình thay ảnh tĩnh tại cùng vị trí, không thấy giật hình.

2 · Bingo trong lúc tải03/11/2026

Ảnh tĩnh của Bingo, một khung lấy từ hoạt hình
  1. Đang tải: Bingo là ảnh tĩnh, một khung của chính hoạt hình, cùng màu.
  2. Trang đã rảnh: tệp hoạt hình mới bắt đầu nạp.
  3. Hoạt hình sẵn sàng: hoạt hình thay ảnh tĩnh, giáo viên không thấy chỗ chuyển.

Ảnh tĩnh nằm đúng chỗ của hoạt hình, ở góc phải dưới màn hình.

3 · Màn Báo cáo điểm danh

Trang Báo cáo điểm danh trên trogiang.ai: bốn thẻ số, dải điểm danh hôm nay, bảng theo lớp

Bốn thẻ số (tổng số học sinh, tỉ lệ điểm danh trung bình, lớp học cần theo dõi, học sinh cần theo dõi), dải "Điểm danh cho lớp có buổi học hôm nay", bảng báo cáo theo lớp và danh sách học sinh cần theo dõi. Gói Promax 2, dữ liệu mẫu. Chụp 03/11/2026.

1Vấn đề & mục tiêu03/11/2026

Trang Báo cáo điểm danh trên Trogiang.ai tải rất chậm. Ở lần mở đầu, nội dung điểm danh hiện sau 39–50 giây. Yêu cầu đặt ra là trang tải dưới 1 giây.

Lần mở đầu, trước khi sửaGiá trị
Thời gian máy chủ phản hồi (TTFB) 3,1–3,9 s
Trình duyệt đọc xong khung trang 32–33 s
Nội dung điểm danh hiện39–50 s
Dung lượng tải về (chưa nén)khoảng 21 MB
Số yêu cầu mạng135–201

Mục tiêu đề xuất: lần mở lại hiện nội dung dưới 1 giây, lần mở đầu dưới 2,5 giây (mục 10).

2Giải pháp tổng quan03/11/2026

Bốn thay đổi, cùng lên production ngày 03/11/2026:

  1. Nạp trước dữ liệu mẫu đúng phiên bản, bỏ tải trùng (mục 4).
  2. Chuyển hướng ngôn ngữ ngay tại Worker phía trước, không đi qua Worker ứng dụng (mục 5).
  3. Bingo hiện ảnh tĩnh trong lúc tải, hoạt hình nạp khi trang đã rảnh (mục 6).
  4. Thư viện Google nạp sau khi trang tải xong (mục 7).
Chỉ sốTrướcSau 03/11/2026
Nội dung hiện, lần mở đầu39–50 s2,6–3,4 s
Nội dung hiện, lần mở lạiChưa đo0,99–1,17 s ở lần đo tốt; 2,3–2,9 s khi máy chủ phản hồi chậm đột biến
Dung lượng, lần mở đầukhoảng 21 MB (chưa nén)4,1–4,3 MB (đã nén), không còn tải trùng
Dung lượng, lần mở lạiChưa đo0–0,3 MB
Chưa xử lýĐường mạng từ Viettel tới trogiang.ai đi qua Tokyo, và khối JavaScript lớn trình duyệt phải biên dịch ở mỗi lần tải. Hai việc này nằm trong lộ trình (mục 9).

2bVị trí trong điều hướng03/11/2026

Báo cáo điểm danh nằm trong mục Báo Cáo, nhóm Phân tích của thanh bên, tại /vi/report/attendance. Đường dẫn trong yêu cầu không có tiền tố ngôn ngữ, nên cách xử lý đường dẫn đó ảnh hưởng trực tiếp tới thời gian tải.

Đường dẫnTrước 03/11/2026Từ 03/11/2026
/report/attendanceWorker ứng dụng trả trang tiếng Anh (phản hồi 1,1–1,7 s), sau đó ứng dụng chuyển sang /vi/ và tải lại trang cùng dữ liệu trangWorker phía trước chuyển ngay sang /vi/report/attendance (mã 307, khoảng 0,23 s)
/report/attendance, giáo viên đã chọn tiếng AnhNhư dòng trênKhông chuyển hướng, giữ trang tiếng Anh (cookie NEXT_LOCALE=en)

3Cơ sở kỹ thuật (đo đạc)03/11/2026

Thành phần tải thừa hoặc tải quá sớm, trước khi sửa

Thành phầnDung lượngVấn đềMục
schema.json2,0 MBNạp trước với mã phiên bản cũ, bộ máy dữ liệu xin lại với mã phiên bản hiện tại. Mỗi lần mở đầu tải hai lần, thừa khoảng 4,7 MB.4
seed.json1,8 MB
samples.json0,26 MB
openapi-v3.json0,3 MB
Trang tiếng Anh và dữ liệu trangChưa đo riêngĐường dẫn thiếu /vi/ tải trang hai lần: bản tiếng Anh rồi bản tiếng Việt.5
rive.wasm (từ unpkg.com)1,4 MBHoạt hình Bingo nạp ngay trong lúc tải trang.6
bingo.riv0,3 MB
Thư viện Google API và đăng nhập Googlekhoảng 0,3 MBNạp khi ứng dụng khởi động, dù chỉ cần cho nhập từ Google Drive và đăng nhập Google.7

Đường mạng từ Viettel

Trogiang.ai dùng Cloudflare làm CDN . Qua IPv4, từ Viettel, trogiang.ai được phục vụ từ Tokyo, trong khi các tên miền khác của FLYER được phục vụ từ Singapore.

Tên miềnTrung tâm dữ liệu (IPv4)Thiết lập kết nối TLS quá 1,5 s
trogiang.aiTokyo (NRT)5/10 lần
giaovien.phongthiao.comSingapore (SIN)1/10 lần
flyer.vnSingapore (SIN)Chưa đo
roadmap.flyer.vnSingapore (SIN)Chưa đo

Với trogiang.ai, có lần kết nối ngừng tới 21 giây. Qua IPv6, trogiang.ai được phục vụ từ Singapore.

Sau khi sửa: thời gian còn lại nằm ở đâu

Ở lần mở lại, phần lớn thời gian xử lý là trình duyệt biên dịch khoảng 8,7 MB JavaScript và dàn trang (khoảng 0,6 giây). Mã của ứng dụng không chiếm phần lớn. Vì vậy các việc tiếp theo tập trung vào lượng JavaScript, lược đồ dữ liệu và đường mạng (mục 9).

4Nạp trước dữ liệu mẫu đúng phiên bản03/11/2026

Cách làm
TrướcTrang nạp trước schema.json, seed.json, samples.json, openapi-v3.json với mã phiên bản cố định ?v=20261013b. Bộ máy dữ liệu xin các tệp này với mã phiên bản hiện tại. Hai địa chỉ khác nhau nên trình duyệt tải hai lần, và bước nạp trước không có tác dụng.
SauChỉ nạp trước schema.json, seed.json, samples.json, với đúng mã phiên bản bộ máy dữ liệu dùng. Các tệp openapi chỉ tải khi cần.

Tiêu chí kiểm: ở lần mở đầu, mỗi tệp dữ liệu xuất hiện đúng một lần trong danh sách yêu cầu mạng.

5Chuyển hướng ngôn ngữ tại Worker phía trước03/11/2026

Cách làm
TrướcĐường dẫn thiếu tiền tố ngôn ngữ đi vào Worker ứng dụng (phản hồi 1,1–1,7 s) và nhận trang tiếng Anh. Ứng dụng chuyển sang /vi/, tải lại trang và dữ liệu trang. Worker phía trước chỉ giữ các trang dựng sẵn.
SauWorker phía trước chuyển ngay mọi đường dẫn trang thiếu tiền tố ngôn ngữ sang /vi/… bằng mã 307 , mất khoảng 0,23 giây. Ngoại lệ: giáo viên đã chọn tiếng Anh (cookie NEXT_LOCALE=en).

Tiêu chí kiểm: mở /report/attendance khi chưa có cookie ngôn ngữ, phản hồi đầu tiên là 307 tới /vi/report/attendance; khi có NEXT_LOCALE=en, không chuyển hướng.

6Bingo: ảnh tĩnh trước, hoạt hình sau03/11/2026

Cách làm
TrướcHoạt hình linh vật Bingo nạp ngay trong lúc tải trang: rive.wasm 1,4 MB từ unpkg.com và bingo.riv 0,3 MB.
SauBingo hiện một ảnh tĩnh, là một khung của chính hoạt hình đã tô màu, cho tới khi trang tải xong và rảnh (mốc tải xong cộng 2,5 giây). Sau đó tệp hoạt hình mới nạp (đo được bắt đầu vào khoảng giây thứ 6) và thay ảnh tĩnh, không thấy giật hình.

Tiêu chí kiểm: trước mốc tải xong cộng 2,5 giây không có yêu cầu tới rive.wasm hay bingo.riv; khi hoạt hình thay ảnh tĩnh, vị trí, kích thước và màu của Bingo không đổi.

7Thư viện Google nạp sau khi trang tải xong03/11/2026

Cách làm
TrướcThư viện Google API và đăng nhập Google (khoảng 0,3 MB) nạp khi ứng dụng khởi động. Hai thư viện này chỉ cần cho nhập từ Google Drive và đăng nhập Google.
SauNạp sau khi trang tải xong, chế độ lazyOnload .

Tiêu chí kiểm: nhập từ Google Drive và đăng nhập Google vẫn hoạt động; không có yêu cầu tới thư viện Google trước mốc tải xong.

8Dữ liệu & kỹ thuật03/11/2026

Thành phầnChi tiết
Dữ liệu mẫu nạp trướcschema.json 2,0 MB · seed.json 1,8 MB · samples.json 0,26 MB, cùng mã phiên bản với bộ máy dữ liệu. openapi-v3.json 0,3 MB chỉ tải khi cần. Mã cũ ?v=20261013b đã bỏ.
Chuyển hướng ngôn ngữWorker phía trước, mã 307 tới /vi/…; bỏ qua khi có cookie NEXT_LOCALE=en.
Hoạt hình Bingorive.wasm 1,4 MB (unpkg.com) và bingo.riv 0,3 MB, nạp sau mốc tải xong cộng 2,5 giây; trước đó là ảnh tĩnh.
Thư viện GoogleGoogle API và đăng nhập Google, khoảng 0,3 MB, chế độ lazyOnload.
Địa chỉ trogiang.aiIPv4 104.21.12.96, 172.67.194.7: từ Viettel đi tới Tokyo (NRT). IPv6: Singapore (SIN).
JavaScriptKhoảng 8,7 MB phải biên dịch ở mỗi lần tải. Tài liệu GraphQL sinh tự động 1,3 MB có trên mọi trang; moment và next-translate 0,8 MB.
Lược đồ dữ liệuschema.json 2 MB được phân tích lại ở mỗi lần tải.
CSS429 KB

9Lộ trình triển khai03/11/2026

Hạng mụcPhạm viNgười phụ tráchTrạng thái
Bốn thay đổi mục 4–7Nạp trước đúng phiên bản, chuyển hướng ngôn ngữ, ảnh tĩnh Bingo, thư viện Google nạp sau.Đã lên 03/11
Định tuyến TokyoGửi phiếu hỗ trợ Cloudflare về việc Viettel đi tới NRT cho zone trogiang.ai, hoặc phục vụ trogiang.ai qua một zone hay dải IP đi tới SIN. Cần chủ sản phẩm duyệt vì thay đổi cài đặt DNS hoặc zone.Cần chủ sản phẩm
Giảm JavaScriptTài liệu GraphQL sinh tự động 1,3 MB có trên mọi trang; moment và next-translate 0,8 MB.Còn lại
Lược đồ dữ liệuKhông phân tích lại lược đồ 2 MB ở mỗi lần tải: lưu trong trình duyệt, hoặc dùng lược đồ nhỏ hơn.Còn lại
CSSGiảm 429 KB CSS.Còn lại
Đo từ người dùng thậtGhi thời gian tải từ trình duyệt của giáo viên để theo dõi chỉ số mục 10.Còn lại

10Chỉ số thành công03/11/2026

Chỉ sốHiện tại (03/11/2026)Mục tiêu đề xuất
Nội dung hiện, lần mở lại0,99–1,17 s ở lần đo tốt; 2,3–2,9 s khi máy chủ phản hồi chậmdưới 1 s
Nội dung hiện, lần mở đầu, từ Việt Nam2,6–3,4 sdưới 2,5 s

Hai mục tiêu đo bằng thời gian ghi từ trình duyệt của người dùng thật. Phần ghi số này chưa có và nằm trong lộ trình (mục 9).

11Câu hỏi mở03/11/2026

  • Mục tiêu "dưới 1 giây" áp cho lần mở lại, hay cho cả lần mở đầu?
  • Định tuyến Tokyo xử lý bằng phiếu hỗ trợ Cloudflare hay chuyển trogiang.ai sang zone hoặc dải IP khác? Ai duyệt thay đổi DNS?
  • Thời gian tải từ người dùng thật ghi bằng công cụ nào, xem ở đâu?
  • Lược đồ dữ liệu 2 MB: lưu trong trình duyệt, hay làm lược đồ nhỏ hơn?

Trang Báo cáo điểm danh thật trên trogiang.ai, nạp trong khung iPhone và iPad. Nút Tải lại nạp lại cả hai khung: nội dung hiện trước, Bingo là ảnh tĩnh, hoạt hình thay vào sau vài giây.

iPad
9:41
iPhone 15 · 393 × 852
9:41
iPad Air 11" · 820 × 1180

Mở riêng trang: trogiang.ai/vi/report/attendance?plan=promax2

Bốn thay đổi chạy trên trogiang.ai từ ngày 03/11/2026.

Hạng mụcProduction 03/11/2026
Nạp trước dữ liệuChỉ schema.json, seed.json, samples.json, đúng mã phiên bản; không còn tải trùng
Chuyển hướng ngôn ngữ307 tới /vi/… tại Worker phía trước, trừ khi có NEXT_LOCALE=en
BingoẢnh tĩnh trong lúc tải; hoạt hình nạp sau mốc tải xong cộng 2,5 giây
Thư viện GoogleNạp sau khi trang tải xong

Màn hình production · 03/11/2026

Báo cáo điểm danh trên production

Báo cáo điểm danh · /vi/report/attendance?plan=promax2. Gói Promax 2, dữ liệu mẫu, Bingo ở góc phải dưới. Chụp 03/11/2026.

VVideo giới thiệu · hoạt hình 2D

Video giới thiệu hoạt hình 2D sẽ được bổ sung sau.