Thành tựu của một lập trình viên khi xây dựng được một website hoạt động đầy đủ chức năng chỉ trong 128 kilobyte đã châm ngòi cho những cuộc thảo luận sôi nổi về tình trạng phát triển web hiện đại và liệu ngành công nghiệp có đang đi lạc hướng trong việc tối ưu hóa tài nguyên hay không.
Dự án này xuất hiện từ một thử thách khi một nhà thiết kế tuyên bố rằng không thể giảm kích thước file xuống thêm nữa. Thay vì chấp nhận giới hạn này, lập trình viên đã quyết tâm chứng minh điều ngược lại, tạo ra một website hoàn chỉnh có thể chứa vừa trong cùng một không gian lưu trữ mà nhiều website hiện đại sử dụng cho một hình ảnh duy nhất.
Các Ràng Buộc Kỹ Thuật Được Áp Dụng
- Quy Tắc CDN: Toàn bộ ứng dụng phải hoạt động trên trang web bên thứ ba bên ngoài
- Yêu Cầu File Đơn: Không thay đổi phía server, mọi thứ trong một file duy nhất
- Tương Thích Đa Trình Duyệt: Phải hoạt động mượt mà trên Chrome, Firefox, Safari, Edge
- Chỉ Tĩnh: Không cơ sở dữ liệu, không xử lý backend
Cú sốc thực tế về tình trạng phình to của Web
Phản ứng từ cộng đồng đã tiết lộ những so sánh gây sốc, làm nổi bật việc phát triển web đã đi chệch khỏi hiệu quả như thế nào. Người dùng chỉ ra rằng một trò chơi Freecell đơn giản hiện tại tiêu thụ 164MB bộ nhớ - một trò chơi từng chạy hoàn hảo trên Windows 95 chỉ với 8MB tổng bộ nhớ hệ thống. Còn đáng kinh ngạc hơn, trang lỗi 404 của Slack được báo cáo là nặng 50MB, gấp 400 lần so với toàn bộ website chức năng này.
Một thành viên cộng đồng đã chia sẻ một quan sát đặc biệt thú vị về bản phát hành gốc của DOOM năm 1993, nặng dưới 3MB, trong khi các website hiện đại thường xuyên tải hàng chục megabyte JavaScript chỉ để hiển thị một form đăng nhập. Sự so sánh này nhấn mạnh việc ưu tiên phát triển web đã thay đổi đáng kể từ hiệu quả sang tiện lợi.
So sánh mức sử dụng bộ nhớ (Các ứng dụng hiện đại)
- Emacs: 115MB
- Thunderbird: 900MB
- Chrome: ~2GB (nhiều tiến trình)
- Trò chơi Freecell: 164MB
- Trang lỗi 404 của Slack: 50MB
- Website nổi bật 128KB: 0.128MB
Nghệ thuật đã mất của phát triển theo ràng buộc
Cuộc thảo luận tiết lộ sự phân chia thế hệ trong các phương pháp lập trình. Các lập trình viên học nghề khi tài nguyên còn khan hiếm đã bày tỏ sự thất vọng khi thấy những kỹ năng tối ưu hóa mà họ đã khó khăn rèn luyện trở nên dường như vô dụng trong môi trường ngày nay. Cuộc trò chuyện đề cập đến việc các ràng buộc từng thúc đẩy sự đổi mới như thế nào, với một người tham gia lưu ý rằng một số giải pháp sáng tạo nhất xuất hiện khi làm việc trong những giới hạn chặt chẽ.
Tôi lớn lên ở thế giới thứ ba nơi tài nguyên cực kỳ đắt đỏ, vì vậy sự nghiệp đầu tiên của tôi là làm được nhiều nhất với những tài nguyên mình có. Đó là một kỹ năng mà tôi đã mài giũa rất tốt và giờ đây nó cảm thấy vô dụng và không được đánh giá cao.
Cộng đồng kỹ thuật tranh luận liệu sự thay đổi này có đại diện cho tiến bộ hay thoái bộ. Trong khi các website hiện đại có thể hiển thị nhiều video cùng lúc và xử lý các bộ ký tự quốc tế phức tạp mà các hệ thống cũ không thể quản lý, nhiều người đặt câu hỏi liệu những khả năng này có biện minh cho việc tiêu thụ tài nguyên khổng lồ hay không.
Các Cuộc Thi Kích Thước Web Trong Lịch Sử
- Cuộc thi trang web 5KB ban đầu (kết thúc năm 2002)
- Được thay thế bằng cuộc thi 10KB
- Khuyến nghị của Jakob Nielsen năm 1999: tổng kích thước trang 50KB
- So sánh hiện đại: 128KB = gấp 2.5 lần khuyến nghị của Nielsen từ 25 năm trước
Tác động thực tế đến trải nghiệm người dùng
Một số lập trình viên đã chia sẻ các ví dụ thực tế về việc tình trạng phình to web ảnh hưởng đến công việc hàng ngày như thế nào. Một người đề cập đến việc cần mua laptop mới vì các quy trình build frontend yêu cầu 5GB RAM và mất bốn phút để hoàn thành. Những người khác mô tả sự thất vọng khi các website tải chậm mặc dù có kết nối internet tốc độ cao, với nút thắt cổ chai là mã không hiệu quả thay vì tốc độ mạng.
Cuộc thảo luận cũng làm nổi bật việc điều này ảnh hưởng đến người dùng ở các khu vực khác nhau trên thế giới như thế nào. Trong khi các lập trình viên ở các nước giàu có có thể không nhận thấy tác động của một website 50MB trên kết nối cáp quang, người dùng trên mạng chậm hơn hoặc có giới hạn dữ liệu phải đối mặt với những rào cản thực sự trong việc truy cập nội dung.
Con đường phía trước
Cộng đồng thừa nhận rằng sự khắc khổ cực đoan không phải lúc nào cũng thực tế hoặc có lợi. Các ứng dụng web hiện đại cần xử lý các tương tác phức tạp, phương tiện đa phương tiện phong phú và các yêu cầu về khả năng tiếp cận mà không phải là những cân nhắc trong các thời đại trước đó. Tuy nhiên, nhiều người lập luận để tìm ra một điểm cân bằng giữa những ràng buộc của quá khứ và sự thừa thãi của hiện tại.
Dự án website 128KB đóng vai trò như một bằng chứng khái niệm rằng những cải thiện đáng kể về hiệu quả là có thể mà không cần hy sinh chức năng. Nó chứng minh rằng với việc lập kế hoạch cẩn thận và triển khai có kỹ năng, các lập trình viên có thể tạo ra những trải nghiệm nhanh chóng, phản hồi tốt và hoạt động tốt trên các thiết bị và điều kiện mạng khác nhau.
Bài học rộng lớn hơn mở rộng ra ngoài phát triển web đến kỹ thuật phần mềm nói chung. Khi khả năng phần cứng tiếp tục mở rộng, thử thách trở thành việc duy trì kỷ luật xung quanh việc sử dụng tài nguyên trong khi vẫn cung cấp những trải nghiệm phong phú mà người dùng mong đợi. Các dự án thành công nhất có thể là những dự án chấp nhận các ràng buộc không phải vì họ phải làm vậy, mà vì kết quả rõ ràng tốt hơn khi họ làm như vậy.
Tham khảo: I'm more proud of these 128 kilobytes than anything I've built since