PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic WEB разработка *NIX CouchDB Hack Python
Главная Статьи PHP Люди, используйте PHP! Часть третья
Главная
 Главная  Контакты
 
Программинг
Статьи Книги ЧаВО
 
xBOOKi
Fresh Books Операционки Сети
 
Поиск
-------
 
Counters
Яндекс цитирования
Rambler's Top100
-------
 
CryptDisk.4h
Программа которая позволяет создать виртуальный шифрованный логический диск.

cryptdisk.4hack.com

-------
 
 

Люди, используйте PHP! Часть третья

Евгений Молодкин, johny_webmaster@nm.ru

Сейчас много говорят о том, что долгая загрузка странички - это плохо, очень долгая загрузка - очень плохо. Использовать меньше графики, навороченных скриптов и аплетов (за исключением, конечно, сайтов, которые посвящены графике или скриптам) - один из основных способов уменьшить объём странички. Этим должны заниматься сами Веб-мастеры. Есть и другой способ - убирать лишние пробелы, переносы строк, заменять длинные теги аналогичными, но короткими. Но зачастую некоторые пренебрегают таким прекрасным способом, говоря что-то вроде "У меня на сайте более 100 страниц!!! Да если каждую редактировать вручную переделывать, это ж с ума сойти можно!!!" (конечно, это не относится к профессиональным Веб-разработчикам). Так почему бы не отдать такую рутинную работу скрипту? Я никаких ПРОТИВ не вижу. Как вы уже догадались, скрипт будет написан на PHP. Итак, начнём.

Первое, что нужно сделать, это решить, что должен делать наш скрипт:
1. Убирать лишние пробелы.
2. Убирать все переводы строк.
3. Заменять некоторые длинные теги короткими.

Некоторые скажут - мало. Я тоже думал "мало", но после того, как я опробовал скрипт на страничке из Dreamweaver`а и та уменьшилась почти на 30 % (и это учитывая то, что Dreamweaver - одна из самых лучших программ для верстки страничек), я убедился, что этого будет достаточно, во всяком случае пока.

Сразу хочу сказать, чтобы в меня не швыряли помидорами заядлые программисты на PHP. Скрипт написан не из соображений компактности и быстродействия (зато в нём легко разобраться, да и скорость тут, в принципе, ни к чему).

Исходный код скрипта с комментариями:

<?php
/* Запускать скрипт следует с параметром files, равным имени файла, подлежащего оптимизации */
/* Открываем файл, с именем, указанным в параметре files, для чтения */
$fp = fopen($files, "r");
/* Читаем данные из файла в массив $soo */
$soo = fread($fp, filesize( $files ));
/* Убираем все переносы строки */
$soo = str_replace("\n","", $soo);
/* Заменяем все пробелы более одного подряд одним пробелом */
$soo = str_replace(" ","", $soo);
$soo = str_replace("  ","", $soo);
$soo = str_replace("   ","", $soo);
$soo = str_replace("    ","", $soo);
$soo = str_replace("     ","", $soo);
$soo = str_replace("       ","", $soo);
$soo = str_replace("        ","", $soo);
$soo = str_replace("         ","", $soo);
$soo = str_replace("          ","", $soo);
/* Надеюсь, более десяти пробелов подряд нам не встретится */
/* Теперь убираем все пробелы между кавычками > и < */
$soo = str_replace("> <","><", $soo);
$soo = str_replace(">  <","><", $soo);
$soo = str_replace(">   <","><", $soo);
$soo = str_replace(">    <","><", $soo);
$soo = str_replace(">     <","><", $soo);
$soo = str_replace(">      <","><", $soo);
$soo = str_replace(">       <","><", $soo);
$soo = str_replace(">        <","><", $soo);
$soo = str_replace(">         <","><", $soo);
$soo = str_replace(">          <","><", $soo);
/* Убираем все пробелы перед кавычками и после кавычек (думаю больше 5 пробелов не будет)*/
$soo = str_replace("< ","<", $soo);
$soo = str_replace("<  ","<", $soo);
$soo = str_replace("<   ","<", $soo);
$soo = str_replace("<    ","<", $soo);
$soo = str_replace("<     ","<", $soo);
$soo = str_replace(" >",">", $soo);
$soo = str_replace("  >",">", $soo);
$soo = str_replace("   >",">", $soo);
$soo = str_replace("   >",">", $soo);
$soo = str_replace("     >",">", $soo);
/* А теперь заменим нехорошие теги хорошими :) */
$soo = str_replace("<ADDRESS>","<I>", $soo);
$soo = str_replace("<STRONG>","<B>", $soo);
$soo = str_replace("<EM>","<I>", $soo);
$soo = str_replace("<STRIKE>","<S>", $soo);
$soo = str_replace("<BLOCKQUOTE>","<UL>", $soo);
$soo = str_replace("<VAR>","<I>", $soo);
$soo = str_replace("<CITE>","<I>", $soo);
$soo = str_replace("<CODE>","<TT>", $soo);
$soo = str_replace("<KBD>","<TT>", $soo);
$soo = str_replace("<SAMP>","<TT>", $soo);
/* Закрываем файл */
fclose($fp);
/* Теперь открываем этот же файл для записи */
$fp = fopen($files, "w");
/* Заменяем старый код оптимизированным, из массива $soo */
$fw = fwrite($fp, $soo);
/* Закрываем этот файл (теперь уже окончательно) */
fclose($fp);
?>

У странички, оптимизированной этим скриптом будет одно преимущество: если её захотят скопировать, придётся долго разбираться в её исходнике (чтобы не скопировали прямо из броузера, см. статью "Как защитить от копирования текст на вашем сайте" номера 209 Internet Zone).

Советую для удобства сделать страничку с формой (одно поле текста, с именем files и кнопка Submit) и action равным имени скрипта-оптимизатора, где нужно указать имя файла и нажать на кнопочку. Кстати, тогда лучше будет сделать мета-тег в скрипте, возвращающий вас на страничку с формой.

<meta http-equiv="refresh" content="0;URL=Ваша_страничка_с_формой">

Ещё один совет. Чтобы удобнее оптимизировать странички (да и на будущее пригодится), установите на домашнем компьютере Russian Apache и гипертекстовый процессор PHP, тогда можно будет производить отладку скриптов PHP "не отходя от кассы" :) Где взять и как настроить - см. сайт www.web.ru.

На этом и заканчивается серия статей о PHP. Главная задачей этих статей, чтобы вы поняли, как разнообразно применение PHP, какой это мощный язык программирования.

Хочу ещё раз сказать. Люди, используйте PHP!

 



Свежее
Резервное копирование rsync-ом
DNS Amplification (DNS усиление)
Алгоритм Шинглов — поиск нечетких дубликатов текста
Metasploit Framework. Обзор
Использование CouchDB
-------



 
Copyright © 2003-2009   Frikazoid.
Rambler's Top100