Tại sao một trình duyệt web lại cần tới những 4 GB RAM để chạy vậy?

0
140

r/askscience u/profdc9 (8.4k points)

Hồi những năm 90 khi hệ thống WWW mới khởi đầu, một cái máy khoảng 16MB thôi cũng đủ để chạy Netscape hay Mosaic. Bây giờ, có vẻ như có tận 2 GB cũng chẳng đủ. Cái gì đang chiếm nhiều diện tích đến vậy?
______________________
Link Reddit: https://redd.it/hajbhy
______________________

u/YaztromoX (7.1k points – x1 platinum – x3 golds – x2 silvers – x1 today i learned – x1 eli5 & 8 more)
Hệ thống World-Wide-Web được phát minh vào năm 1989. Lẽ dĩ nhiên, vào thời đó, có một cái máy tính với lượng RAM ở mức GB là điều hoàn toàn không thể. Những phiên bản đầu tiên của trang web chỉ có những lựa chọn trình bày rất đơn giản – bạn có thể có các đoạn văn, phần mở đầu, danh sách, chữ in đậm, chữ in nghiêng, chữ gạch chân, liên kết, anchor (chữ có kèm link), văn bản gốc, trích dẫn, và tất nhiên là chữ bình thường – và chỉ có vậy mà thôi. Nó quan tâm đến việc phân loại dữ liệu bên trong tài liệu, hơn là đến việc nó sẽ có hình dạng như thế nào và được tiếp nhận ra sao (^0). Nếu tinh mắt, bạn có thể nhận ra là tôi không liệt kê phần “hình ảnh” – chúng không được hỗ trợ trong phiên bản đầu tiên của HTML, ngôn ngữ gốc của Web.

Vào giữa những năm 1990, HTML 2.0 đã chính thức được tiêu chuẩn hoá (phiên bản được tiêu chuẩn hoá đầu tiên của HTML). Cái này cho cả hình ảnh vào trong tiêu chuẩn, cùng với bảng, bản đồ hình ảnh, quốc tế hoá và địa phương hoá, và một số tính năng khác nữa. (^1)

Tới thời điểm này thì việc kết xuất đồ hoạ (rendering) cho một trang web khá đơn giản: bạn phân tách tài liệu HTML vào một cây tài liệu, liệt kê phần chữ ra, làm một vài định dạng chữ đơn giản, cho thêm hình ảnh vào, và chỉ có thế thôi. Nhưng khi trang web càng ngày càng được thương mại hoá, và các tổ chức muốn sử dụng nó nhiều hơn với tư cách là một nền tảng phát triển cho các ứng dụng, nó đã được mở rộng theo một cách mà thiết kế ban đầu đã không lường trước được.

Vào năm 1997, HTML 4 được tiêu chuẩn hoá. Một phần quan trọng của tiêu chuẩn này là nó có thể hoạt động liên từ với một cú pháp tiêu chuẩn mới, gọi là “Cascading Style Sheet” (CSS). Mục đích ở đây là HTML sẽ tiếp tục chứa dữ liệu của tài liệu và siêu dữ liệu đi kèm với dữ liệu đó, nhưng không bao gồm việc nó sẽ được trình bày và hiển thị như thế nào, mà CSS sẽ đảm nhiệm chuyện trình bày và hiển thị. Trước CSS, có những tính chất gắn thẻ đặc quyền (tạm dịch “propriety tag attributes”) sẽ biểu hiện những thứ như kích cỡ chữ, màu sắc hay vị trí bên trong HTML – CSS đã thay đổi việc này để bạn có thể làm thế BÊN NGOÀI HTML. Hồi đó thì việc này được xem là một điều tốt, vì bạn có thể (ít nhất là trên lý thuyết) định dạng lại trang web mà không cần phải thay đổi dữ liệu chứa bên trong trang web – nghĩa là dữ liệu và thông tin định dạng hoàn toàn tách biệt nhau. Bạn không cần phải đi tìm tất cả các link để thay đổi màu hiển thị của nó từ xanh sang đỏ – bạn chỉ cần thay đổi style của anchor là được.

Nhưng sự phức tạp này có cái giá của nó – bạn sẽ cần thêm bộ nhớ để lưu trữ, áp dụng và trình bày những tài liệu của mình, nhất là khi các style càng ngày càng trở nên phức tạp hơn.

Và giá như đó là kết thúc của mọi chuyện! Thêm nữa, cũng trong năm 1997, Javascript của Netscape đã được tiêu chuẩn hoá thành ECMAScript. Nên ngoài HTML cho dữ liệu tài liệu, và CSS cho việc trình bày dữ liệu đó, một trình duyệt web giờ còn phải kiêm thêm việc chạy hẳn một ngôn ngữ nữa.

Và từ đó, mọi thứ chỉ càng trở nên rắc rối hơn. Một trình duyệt web hiện đại sẽ có hỗ trợ cho các chủ đề, phần hình ảnh (WebGL), đảm nhiệm các tài liệu XML, âm thanh và mở video (^2), WebAssembly, MathML, Session Initiation Protocol (thường được dùng cho những đặc tính của âm thanh và chat qua video), WebDAV (cho việc sử dụng ổ đĩa trong máy qua trang web), và chất chồng biết bao tiêu chuẩn khác nữa. Bây giờ một trình duyệt web thông thường giống với một hệ điều hành hơn là một công cụ xem tài liệu.

Nhưng vẫn còn nhiều hơn nữa. Với số tiêu chuẩn khổng lồ này, chúng ta cũng có một số lượng rất lớn những nhà sáng lập đang cố gắng tận dụng hết mức những tiêu chuẩn đó. Các trang web bây giờ có thể chồng chéo cực kì phức tạp các lớp video, hình ảnh, và chữ cái, kèm theo là các hiệu ứng động và việc xử lý Javascript ở phía sau, tất cả đều ngốn RAM của người dùng. Những nhà phát triển web cũng đã cố gắng giảm tối thiểu nguồn lực cần sử dụng, nhưng với những trang web phức tạp cần làm nhiều hơn thì bạn chỉ còn cách để cho nó nuốt RAM. Để so sánh thì, khi tôi gõ những dòng này vào Reddit “mới”, quá trình đang chạy để trình bày và hiển thị trang web (cũng như cho phép tôi gõ văn bản ra) đang sử dụng 437.4 MB RAM. Nhiêu đó thì thật là ĐIÊN RỒ khi chỉ có khoảng chưa tới 3 trang đầy chữ với một ít ngôn ngữ đánh dấu và một số lượng hình ảnh nhỏ. Nhưng cây trình bày (render tree) có rất nhiều yếu tố (^3) và phải mất rất nhiều RAM để lưu trữ tất cả những yếu tố đó, cùng với bộ nhớ dự phòng cho việc hiển thị phần trình bày của trang web nữa. Những trang web đơn giản sẽ dùng ít bộ nhớ hơn (^4), những trang web phức tạp thì ngốn nhiều hơn.

Nên, tóm lại thì, đó là kết quả của việc trang web càng ngày càng phải tiếp nhận nhiều tiêu chuẩn theo thời gian, khiến các trình duyệt trở thành những phần mềm phức tạp, và đồng thời những nhà thiết kế trang web cũng đang ngày càng tạo ra những trang web phức tạp để tận dụng tất cả những tính năng mới nữa. Mong là những gì tôi vừa nói có thể giúp được!
_____________________

^0: Thực tế, một yếu tố được xem xét ban đầu của HTML là việc người dùng có thể điều chỉnh nó kiểu gì cũng được.
Ví dụ, vì vậy nên người ta đã xem xét các phần mềm đọc từ màn hình hoặc sử dụng cho những người thị giác kém. Khách hàng và người dùng có thể hoàn toàn kiểm soát việc thông tin đó sẽ được trình bày thế nào.

^1: Rất nhiều trong số những tính năng đó đã có sẵn trong cả trình duyệt NCSA Mosaic và Netscape Navigator, và đã được thêm vào các tiêu chuẩn từ trước để khiến cho các tính năng mở rộng đó trở thành chính thức.

^2: Cho tới khi có HTML 5, việc trình duyệt web phải phụ thuộc vào những phần mềm phát âm thanh/video bên ngoài để phát những video thông qua plug-in (RealPlayer là một trong những phần mềm như vậy được ra đời sớm nhất) là chuyện bình thường. Bây giờ nó đã được tích hợp vào trình duyệt luôn rồi. Nhưng có cái lợi là, việc phát video trở nên có chuẩn mực hơn và các trình duyệt đã có thể kiểm soát việc phát video và âm thanh hơn. Dĩ nhiên, điểm bất lợi là trình duyệt trở nên phức tạp hơn và sẽ ngốn nhiều dữ liệu hơn cho những trang web có chứa video.

^3: Chế độ Debug của Safari có một cửa sổ hiển thị toàn bộ cây trình bày cho tôi, nhưng không cho phép đếm số lượng, và bạn thậm chí không thể cắt-dán cái cây đó ra chỗ khác (ít nhất thì tôi không tìm ra cách) để đếm số lượng. Danh sách đó dài ít nhất hơn chục trang hoặc hơn thế nữa.

^4: trang web example(.)com chỉ sử dụng mỗi 22MB để trình bày là một ví dụ.
______________________
Bài đăng của bạn Julian Stella trong group:
https://www.facebook.com/…/rvn.gr…/permalink/567782027465343
Edited by https://rvnweb.site
[Image by Lifewire]

LEAVE A REPLY

Please enter your comment!
Please enter your name here