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ý.
Lần mở đầu: 39–50 s → 2,6–3,4 sPrompt. 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 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.
/report/attendance?plan=promax2. Worker phía trước chuyển ngay sang /vi/report/attendance.
Ảnh tĩnh nằm đúng chỗ của hoạt hình, ở góc phải dưới màn hình.
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.
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ửa | Giá 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ện | 39–50 s |
| Dung lượng tải về (chưa nén) | khoảng 21 MB |
| Số yêu cầu mạng | 135–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).
Bốn thay đổi, cùng lên production ngày 03/11/2026:
| Chỉ số | Trước | Sau 03/11/2026 |
|---|---|---|
| Nội dung hiện, lần mở đầu | 39–50 s | 2,6–3,4 s |
| Nội dung hiện, lần mở lại | Chưa đo | 0,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ở đầu | khoả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ại | Chưa đo | 0–0,3 MB |
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ẫn | Trước 03/11/2026 | Từ 03/11/2026 |
|---|---|---|
/report/attendance | Worker ứ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 trang | Worker 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 Anh | Như dòng trên | Không chuyển hướng, giữ trang tiếng Anh (cookie NEXT_LOCALE=en) |
| Thành phần | Dung lượng | Vấn đề | Mục |
|---|---|---|---|
schema.json | 2,0 MB | Nạ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.json | 1,8 MB | ||
samples.json | 0,26 MB | ||
openapi-v3.json | 0,3 MB | ||
| Trang tiếng Anh và dữ liệu trang | Chư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 MB | Hoạt hình Bingo nạp ngay trong lúc tải trang. | 6 |
bingo.riv | 0,3 MB | ||
| Thư viện Google API và đăng nhập Google | khoảng 0,3 MB | Nạp khi ứng dụng khởi động, dù chỉ cần cho nhập từ Google Drive và đăng nhập Google. | 7 |
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ền | Trung tâm dữ liệu (IPv4) | Thiết lập kết nối TLS quá 1,5 s |
|---|---|---|
| trogiang.ai | Tokyo (NRT) | 5/10 lần |
| giaovien.phongthiao.com | Singapore (SIN) | 1/10 lần |
| flyer.vn | Singapore (SIN) | Chưa đo |
| roadmap.flyer.vn | Singapore (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.
Ở 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).
| Cách làm | |
|---|---|
| Trước | Trang 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. |
| Sau | Chỉ 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.
| 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. |
| Sau | Worker 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.
| Cách làm | |
|---|---|
| Trước | Hoạ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. |
| Sau | Bingo 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.
| Cách làm | |
|---|---|
| Trước | Thư 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. |
| Sau | Nạ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.
| Thành phần | Chi tiết |
|---|---|
| Dữ liệu mẫu nạp trước | schema.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 Bingo | rive.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 Google | Google API và đăng nhập Google, khoảng 0,3 MB, chế độ lazyOnload. |
| Địa chỉ trogiang.ai | IPv4 104.21.12.96, 172.67.194.7: từ Viettel đi tới Tokyo (NRT). IPv6: Singapore (SIN). |
| JavaScript | Khoả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ệu | schema.json 2 MB được phân tích lại ở mỗi lần tải. |
| CSS | 429 KB |
| Hạng mục | Phạm vi | Người phụ trách | Trạng thái |
|---|---|---|---|
| Bốn thay đổi mục 4–7 | Nạ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 Tokyo | Gử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 JavaScript | Tà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ệu | Khô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 | |
| CSS | Giảm 429 KB CSS. | Còn lại | |
| Đo từ người dùng thật | Ghi 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 |
| Chỉ số | Hiện tại (03/11/2026) | Mục tiêu đề xuất |
|---|---|---|
| Nội dung hiện, lần mở lại | 0,99–1,17 s ở lần đo tốt; 2,3–2,9 s khi máy chủ phản hồi chậm | dưới 1 s |
| Nội dung hiện, lần mở đầu, từ Việt Nam | 2,6–3,4 s | dướ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).
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.
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ục | Production 03/11/2026 |
|---|---|
| Nạp trước dữ liệu | Chỉ 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 Google | Nạp sau khi trang tải xong |
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.
Video giới thiệu hoạt hình 2D sẽ được bổ sung sau.