Многие из нас используют большое количество пустых строк при написании кода. Хорошие новости - пустые строки в PHP не передаются браузеру. Однако, передаются в HTML.
Пустые строки потребляют незначительное количество траффика. Если посещаемость сайтов большая, эта маленькая цифра может перерости в значительную. И тут нам на помощь придет PHP.
Подготовка
Ниже представлены коды для HTML и CSS файлов.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Hey a Page!</title>
<link rel="stylesheet" href="./css.css" type="text/css">
</head>
<body id="homepage">
<div id="wrapper">
<div id="header">
<h1>Kittens for sale!</h1>
<div>
There are lots of spaces here! But we need to get rid of them!
</div>
</div>
<div id="mainbody">
Lorem Ipsum dol...
</div>
</div>
</body>
</html>
body {
min-height: 800px;
background: black;
font-size: 18px;
}
#wrapper {
width: 960px;
margin: 20px auto;
padding: 15px;
}
#header h1 {
text-indent: -99999em;
background: url(../images/header.png);
display: block;
width: 100%;
height: 48px;
}
#mainbody {
font-weight: bold;
}
PHP
Преимуществом данного скрипта является то, что он может одновременно работать как с HTML, так и с CSS. Скрипт загружает файл, убирает все пустые строки, оставляет только 1 пробел, чтобы слова не соединялись в одно целое.
<?php
$fileDirectory = '';
$file = $_GET['q'];
$nameExplode = explode('.', $file);
$ext = $nameExplode[1];
$fileName = $fileDirectory . $file;
if ($ext != 'css' AND $ext != 'htm' AND $ext != 'html') {
//Проверка для хакеров
die('Hackers...!');
} else {
//Начнем
$handle = fopen($fileName, 'r');
$fileData = fread($handle, filesize($fileName));
//Чудеса регулярных выражений
$newData = preg_replace('/\s+/', ' ', $fileData);
fclose($handle);
//Выводим данные
if ($ext == 'css') {
header("Content-type: text/css");
}
echo $newData;
}
?>
Более подробно о каждой части кода
Мы получаем имя файла и проверяем его тип. Далее извлекаем все данные и убираем пробелы и пустые строки. Этот метод наиболее примитивный и не удалит все пустые строки, но он справится с большинством. И это всего несколько строк кода.
<?php
$fileDirectory = '';
$file = $_GET['q'];
$nameExplode = explode('.', $file);
$ext = $nameExplode[1];
$fileName = $fileDirectory . $file;
Этот код задает необходимые переменные. Снова, мы передаем все данные через 'q'. Тут также определяется папка для файлов.
if ($ext != 'css' AND $ext != 'htm' AND $ext != 'html') {
//Проверка для хакеров
die('Hackers...!');
} else {
Тут мы проверяем действительно ли файл является CSS или HTML.
//Начнем
$handle = fopen($fileName, 'r');
$fileData = fread($handle, filesize($fileName));
//Чудеса регулярных выражений
$newData = preg_replace('/\s+/', ' ', $fileData);
fclose($handle);
//Выводим данные
if ($ext == 'css') {
header("Content-type: text/css");
}
echo $newData;
}
?>
Этот код открывает и читает файл - и потом убирает по возможности все пустое пространство. Это достигается путем использования регулярных выражений. Находятся все пробелы, табуляции, пустые строки и заменяются на пробел.
Работает ли это?
Если Вы в браузере напечатаете 'index.php?q=css.css', то увидите одну линию CSS. Значит все работает! Если откроете исходный код страницы, то увидите такую же картину. С помощью данного метода мы уменьшили 314 символьный CSS файл до 277 символов. HTML файл с 528 до 448 символов. Неплохо для 15 строк кода.
Заключение
Это отличный пример того, как мы можем сделать много используя несколько строк кода. Если Вы взгляните на исходный код таких сайтов как Гугл, то заметите, что там практически нет пустых строк.