Bạn đang học về web và vô tình thấy rằng CGI vốn quen thuộc là kĩ xảo điện ảnh, nay lại trở thành một khái niệm gì đó xa lạ trong web? Vậy CGI là gì? Cách thức hoạt động của CGI như thế nào?
1. CGI là gì?
CGI là viết tắt của Common Gateway Interface, tạm dịch là giao diện cổng chung. CGI cung cấp một phần mềm trung gian giữa các máy chủ với cơ sở dữ liệu và nguồn thông tin bên ngoài. Trong đó máy chủ HTTP và 1 CGI script sẽ chịu trách nhiệm phản hồi yêu cầu từ người dùng.
- Máy chủ đảm nhận quản lý các kết nối, việc thực hiện truyền dữ liệu đi và các vấn đề liên quan đến yêu cầu từ người dùng.
- CGI script chịu trách nhiệm xử lý các vấn đề của ứng dụng như truy cập vào dữ liệu và xử lý các tài liệu.
2. Lịch sử hình thành của CGI
Máy chủ web tĩnh được sinh ra để phục vụ cho những yêu cầu từ máy trạm bằng cách lấy các thông tin được lưu trữ trên 1 thiết bị ra. Tuy nhiên, lượng thiết bị máy tính ngày càng nhiều, cơ chế này hoạt động sẽ kém hiệu quả hơn nhiều.
Sự phát triển mạnh mẽ của các website động chứ các ngôn ngữ kịch bản (script) ngày càng nhiều. Cơ chế hoạt động của máy chủ web cũng phải thay đổi để phù hợp với hiện tại.
Khi một máy trạm truy cập vào trang web động, máy chủ nhận yêu cầu và đưa đến 1 ứng dụng thứ 3. Ứng dụng này sẽ xử lý các script độc lập và trả về lại máy chủ web; máy chủ web sẽ chuyển tiếp các phản hồi lại cho khách hàng.
Cho đến năm 1993, một nhóm nghiên cứu của National Center for Supercomputing Applications (NCSA) tạm dịch Trung tâm nghiên cứu về siêu ứng dụng máy tính của Mĩ đã viết các đặc tả nhằm gọi các tệp thực thi dòng lên trên danh sách gửi thư www-talk.
Các nhà phát triển máy chủ web khác đã áp dụng nó và trở thành một tiêu chuẩn cho các máy chủ web kể từ lúc đó.
Đến năm 1997, nhóm nghiên cứu do Ken Coar chủ trì thuộc NCSA tập trung phát triển và đưa ra định nghĩa rõ ràng hơn về CGI, công việc này của họ dẫn đến RFC 3875, trong đó phiên bản đầu tiên của CGI là 1.1.
Các tác giả chính thức được ghi nhận như sau:
- Rob McCool (tác giả của Máy chủ web HTTPd NCSA)
- John Franks (tác giả của GN Web Server)
- Ari Luotonen (nhà phát triển Máy chủ Web CERN httpd)
- Tony Sanders (tác giả của Máy chủ Web Plexus)
- George Phillips (Người bảo trì máy chủ web tại Đại học British Columbia)
3. Các tính năng của CGI
- CGI là một tiêu chuẩn được phát triển với định hướng rõ ràng và có rất nhiều sự hỗ trợ.
- CGI là một công nghệ được kết nối với ngôn ngữ HTML.
- CGI script thường được viết bằng các ngôn ngữ như C, Perl nhưng cũng có thể là một shell script đơn giản.
- Nếu tạo một bộ nhớ đệm có tốc độ nhanh, CGI là một trong những phương pháp tối ưu nhất.
- Cho đến thời điểm hiện tại, CGI vẫn đang rất tương thích với các trình duyệt hiện đại, dù đã phát triển từ những năm 1990.
4. CGI hoạt động như thế nào?
CGI là một giao thức trao đổi giữa máy chủ web và các ứng dụng cổng (gateway application) như PHP, Python,…
Trong thực tế CGI sẽ hoạt động như sau:
- Máy trạm gửi yêu cầu đến máy chủ web, máy chủ web nhận yêu cầu và chuyển tiếp cho ứng dụng cổng. CGI sẽ thực thi một câu lệnh tương ứng phù hợp với ứng dụng đó.
- Các thông tin chi tiết về yêu cầu được ứng dụng truyền qua bằng các biến môi trường, trong khi đó dữ liệu bằng các phương pháp POST hoặc PUT sẽ được truyền qua các cổng nhập tiêu chuẩn. Tức là CGI xử lý dữ liệu của nó song song với dữ liệu chính.
- Ứng dụng sẽ viết nội dung cần trả lời để máy chủ trả thông tin về cho người yêu cầu.
Nghe quá trình này khá đơn giản và hiệu quả. Tuy nhiên, hình thức này dần bộc lộ một số hạn chế như:
- Một yêu cầu sẽ tạo ra một tiến trình làm việc độc lập. Bộ nhớ và các thông tin không được lưu lại sau mỗi phiên, sẽ được tạo lại sao mỗi phiên.
- Một tiến trình mới sẽ tiêu tốn rất nhiều tài nguyên của hệ thống. Nếu trong một thời điểm một loạt yêu cầu được sinh ra sẽ làm máy chủ quá tải ngay lập tức.
- Trong trường hợp máy chủ một nơi, ứng dụng nằm trên một máy tính khác sẽ tạo ra nhiều khó khăn.
5. Ưu và nhược điểm của CGI
Ưu điểm
Code sẵn có để áp dụng vào phần mềm của bạn mà không phải code lại từ đầu.
CGI mạnh mẽ tương thích hầu hết với các ngôn ngữ và bất cứ nền tảng nào, miễn chúng có những đặc điểm kỹ thuật phù hợp.
Các tác vụ nâng cao vốn khó trong Java giờ có thể thực hiện dễ dàng hơn với CGI.
Nhược điểm
CGI rất tốn thời gian để xử lý.
Không lưu lại cache sau mỗi lần tải lại trang.
Mỗi lần tải lại sẽ tốn thêm thời gian do phải tải lại các chương trình vào bộ nhớ.
P.A Việt Nam cung cấp đa dạng các Plan Hosting đáp ứng yêu cầu của khách hàng
Hosting Phổ Thông
Hosting Chất Lượng Cao
Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/
Tham khảo các bài viết khác về hosting cPanel : https://kb.pavietnam.vn/category/linux-hosting/whm-cpanel