Що ж таке CGI?
Незрозуміла абревіатура CGI розшифровується як Common Gateway Interface (дослівно — Загальний Інтерфейс Шлюзу). Стало зрозуміліше? Навряд чи. По суті, CGI — це набір правил, які дозволяють знаходити спільну мову веб-серверу (наприклад, Apache) з будь-якою іншою програмою (наприклад, інтерпретатором Python, Perl чи PHP), при умові, що обидві сторони знають ці правила (мають підтримку CGI).
І для чого воно потрібно?
Ніби все зрозуміло, але відразу виникає запитання: "А навіщо взагалі потрібні веб-серверу якісь додаткові програми?". Насправді, веб-сервер цілком може працювати самостійно, видаючи на запит браузера ті чи інші статичні (збережені на сервері) HTML-сторінки, зображення, каскадні таблиці стилів (CSS), різні файли тощо. І колись, в епоху зародження Інтернету, саме так все і відбувалось.
В сучасному Інтернеті переважна більшість сторінок є динамічними, тобто не зберігаються на сервері, а формуються безпосередньо під час отримання запиту від браузера. Формуються, при потребі враховуючи найрізноманітніші фактори: інформацію, передану у запиті (наприклад при пошуку того чи іншого товару в магазині формується сторінка з результатами пошуку); місцевий час, географічне розташування, мову, вік, стать та особисті налаштування користувача, який здійснив запит до сервера; пристрій, на якому відкриватиметься сторінка, розмір його екрану та інші характеристики. І цей список можна продовжувати. Саме для формування динамічних сторінок веб-сервер звертається по допомогу до сторонніх програм, які генерують потрібну сторінку і повертають її веб-серверу, а він, в свою чергу, передає сторінку веб-браузеру.
Переваги і недоліки CGI
Перевагою CGI є простота налаштування і сумісність практично з будь-якою мовою програмування. Це можуть бути не тільки програми-скрипти, написані на інтерпретованих мовах, на зразок Perl чи PHP, але й exe-файли (для Windows), написані і скомпільовані, для прикладу, на С чи Pascal. Хоча для Web-розробки на стороні сервера зазвичай використовують інтерпретовані мови, але деколи є зміст у використанні скомпільованих програм, оскільки у більшості випадків вони працюють значно швидше.
Недоліком CGI є те, що для кожного запиту запускається окремий процес, тобто окрема копія програми, яка генерує вміст веб-сторінки. При великій кількості запитів це дуже сповільнює роботу, росте навантаження на сервер та споживання пам'яті. Тому зараз хостинг-провайдерами CGI практично не використовується. Але ця технологія залишається корисною для локальних веб-серверів, що використовуються для робробки, а також може використовуватися для окремих сайтів з невеликим навантаженням.