Казнет в 2002: первые корпоративные сайты Казахстана
2002 год. Алматы. Интернет-аудитория Казахстана - около 200 тысяч человек, преимущественно Алматы и Астана (тогда ещё Астана, не Нур-Султан). Соединение - dial-up через телефонную линию, ISDN в крупных офисах. Тарифы: по времени подключения или по трафику.
В этих условиях корпоративный веб-сайт был уже реальностью, но создание каждого требовало решения проблем, о которых сегодня никто не помнит.
Что такое «нормальный корпоративный сайт» в 2002 году
Банк, страховая компания, строительная фирма. Типичный набор страниц:
- Главная с кратким описанием компании
- О компании / история
- Услуги (иногда отдельные страницы на каждую)
- Контакты с картой (картой в виде GIF-изображения, не Google Maps - его ещё нет)
- Новости (если есть, с ручным обновлением через FTP)
Объём работы: 2-4 недели. Команда: один разработчик + дизайнер. Или один человек, умеющий всё.
Технический стандарт 2002 года
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<!-- windows-1251 - стандарт Казнета.
Попытка открыть в KOI8-R: нечитаемые символы.
UTF-8 станет стандартом только после 2007-2008 -->
<meta name="keywords" content="Алматы, компания, услуги, Казахстан">
<meta name="description" content="ТОО Компания - профессиональные услуги в Алматы">
<title>ТОО "Компания" - официальный сайт</title>
</head>
<body bgcolor="#FFFFFF" text="#333333" link="#003399" vlink="#660099"
leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<!-- Цвета ссылок как атрибуты body - CSS не использовали или не доверяли -->
<!-- Обёртка: таблица по центру, ширина 780px -->
<!-- Почему 780? Стандартный монитор - 800×600, за вычетом полосы прокрутки -->
<table width="780" border="0" cellpadding="0" cellspacing="0" align="center">
<!-- Шапка -->
<tr>
<td colspan="3" height="80">
<!-- Логотип: GIF с прозрачным фоном, не более 8KB -->
<img src="images/logo.gif" width="220" height="70" alt="Логотип компании" border="0">
</td>
</tr>
<!-- Навигация: цветная полоска -->
<tr bgcolor="#003399">
<td colspan="3" height="30">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="20"> </td>
<td>
<a href="index.html" style="color:#FFFFFF; text-decoration:none; font-family:Arial; font-size:13px">Главная</a>
<a href="about.html" style="color:#FFFFFF; text-decoration:none; font-family:Arial; font-size:13px">О компании</a>
<a href="services.html" style="color:#FFFFFF; text-decoration:none; font-family:Arial; font-size:13px">Услуги</a>
<a href="contacts.html" style="color:#FFFFFF; text-decoration:none; font-family:Arial; font-size:13px">Контакты</a>
</td>
</tr>
</table>
</td>
</tr>
<!-- Основной контент: три колонки -->
<tr valign="top">
<td width="160" bgcolor="#F5F5F5"><!-- Левое меню --></td>
<td width="10" bgcolor="#CCCCCC">
<!-- Разделитель: пустая ячейка с цветом, spacer.gif -->
<img src="images/spacer.gif" width="1" height="1">
</td>
<td width="610"><!-- Основной контент --></td>
</tr>
</table>
</body>
</html>
PHP 4 для динамических страниц
Статических HTML-страниц хватало для визиток. Для сайтов с новостями или каталогами - PHP 4.x.
<?php
// Типичный PHP 4 код для страницы новостей, 2002 год
// Подключение к БД
$conn = mysql_connect("localhost", "dbuser", "dbpassword")
or die("Ошибка подключения");
mysql_query("SET NAMES 'cp1251'"); // windows-1251 = cp1251 в MySQL
mysql_select_db("company_site", $conn);
// Параметр из URL: уязвимость SQL-инъекции - норма 2002 года
$news_id = $_GET['id'];
$query = "SELECT * FROM news WHERE id=$news_id AND published=1";
$result = mysql_query($query, $conn);
if (mysql_num_rows($result) == 0) {
header("Location: news.html");
exit;
}
$row = mysql_fetch_assoc($result);
// HTML вперемешку с PHP
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?= $row['title'] ?> - ТОО Компания</title>
</head>
<body>
<h2><font face="Arial" size="4"><?= $row['title'] ?></font></h2>
<p><font face="Arial" size="2" color="#666666"><?= date("d.m.Y", strtotime($row['date'])) ?></font></p>
<p><font face="Arial" size="2"><?= nl2br($row['body']) ?></font></p>
</body>
</html>
mysql_* функции, SQL-инъекции, кодировка через SET NAMES, font теги - всё это было стандартом, не отклонением.
Оптимизация под dial-up
Скорость загрузки - главный UX-критерий 2002 года. На 28.8 кбит/с 1 секунда = 3.6 КБ данных. Страница в 36 КБ - 10 секунд загрузки.
Правила, которым следовали:
Изображения: GIF для логотипов и кнопок (чёткость на малых размерах), JPEG для фотографий с качеством 60-70% (не 100%). Каждое изображение: не более 10-15 КБ.
# Оптимизация GIF в Photoshop 5.5 (Web and Devices):
# - Уменьшить палитру до 32-64 цветов вместо 256
# - Включить Interlaced для прогрессивной загрузки
# - Исключить дизеринг где возможно
# Типичный логотип: 200×60 пикселей, 32 цвета GIF = 4-6 КБ
# То же самое как PNG-8 = 5-8 КБ (PNG хуже для небольших размеров в 2002)
HTML минимализация: никаких комментариев в коде продакшн-версии, пробелы убраны.
Кэш через заголовки:
// Статические страницы: разрешить кэширование на 24 часа
header("Cache-Control: public, max-age=86400");
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 86400) . " GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s", filemtime(__FILE__)) . " GMT");
Домены и хостинг в Казахстане 2002
.kz домен: регистрация через КАЗNIC, 2-3 недели ожидания, $100-150/год.
Хостинг: местные провайдеры - NURSAT, Kazakhtelecom (ныне Казахтелеком), некоторые алматинские компании. Виртуальный хостинг: $5-20/месяц. Выделенный сервер - редкость и дорого.
Альтернатива: российские хостинги (masterhost.ru, agava.ru) - дешевле, но ping выше. Для большинства корпоративных сайтов с казахстанской аудиторией это было приемлемо.
Что осталось от той эпохи
Сами сайты давно переделаны или исчезли. Остались принципы, которые стали базовыми не потому что были модными, а потому что работали в реальных ограничениях:
Оптимизация под реальный канал пользователя. В 2002 это был dial-up. В 2025 это может быть нестабильный 4G в регионах. Подход одинаков: измеряй загрузку на реальной сети, а не на офисном Wi-Fi.
Явная кодировка на каждом уровне. В 2002 windows-1251 vs KOI8-R ломала сайты. В 2025 неправильный charset в HTTP-заголовке или базе данных ломает казахский и кыргызский текст. Механизм тот же.
Тест на целевом браузере. В 2002 это IE5 + Netscape 4. В 2025 это Safari на iOS + Chrome на старом Android. Браузеры изменились, необходимость тестирования - нет.