+2.26
5 читателей, 59 топиков

рекомендации по оптимизации работы интернет-ресурсов

Во-первых, при работе с HTTP не забывайте:
  • избегать HTTP запросы – чем меньше их, тем лучше;
  • использовать заголовки «Cache-control» или «Expires»;
  • забыть про редиректы (HTTP Redirect).
Во-вторых, скрипты Java требуют внимательности:
  • При написании документа в его начале обязательно указывайте ссылки на файлы с таблицами стилей (link href).а в конце прописывайте ссылку на файл JavaScript (script src);
  • Вставки CSS и JavaScript храните отдельными файлами;
  • При использовании CSS и JavaScript уменьшайте размеры файлов с помощью утилитов YUI compressor или JSMin. Они позволят разобраться с ненужными комментариями и лишними пробелами, а так же сократят переменные.
  • Проверяйте файлы скрипта на дублирование кодов, что заставляет догружать ставки и задерживать обновление страницы;
  • Избавьтесь от запросов Java к DOM хотя бы частично, выполнив кэширование, отбрасывающее повторяющиеся запросы;
  • Все блоки Java вместе с картинками оставляйте на загрузку в последнюю очередь;
  • При обработке событий в крайнем случае применяйте onresize, аудиты проводите с помощью YUI Event, а привычный «onload» замените на утилиту DOMContentLoaded.
В-третьих, при работе с Ajax запросами:
  • Кэшируйте их;
  • используйте метод GET, вмещающий все запросы в один пакет TCP.
В четвертых, CSS тоже можно оптимизировать:
  • Не засоряйте CSS вычислимыми выражениями (expression);
  • Обязательно сбросьте буфер еще при старте генерации страницы с помощью периодического вызова flush() в PHP, тогда пользователь быстрее загрузить CSS файлы;
  • Для загрузки CSS используйте в начале страницы не @import, а «link»;
  • забудьте про фильтры, они поддерживаются исключительно IE/ лучше возьмите в оборот PNG8.
В-пятых, будьте терпеливы и внимательны при написании сайта:
  • Все страницы перед отдачей сжимайте, например, через утилиту mod_gzip;
  • Для доставки контента используйте услугами таких сетей как Akamai;
  • В странице не прописывайте более трех ссылок на другие домены, будь то обращения к картинке или iframe, ибо сайту приходится дожидаться ответа чужих серверов;
  • При использовании iframe'ов, постарайтесь оставить только основные, а так же избавиться от ссылок на чужие ресурсы, иначе часть страницы может остаться заблокированной;
  • В Apache настройте ETags;
  • Рационально отбирайте те скрипты, которые понадобятся при первоначальной загрузке;
  • А весь контент делите равными долями по имеющимся доменам, тогда браузер подгрузит все необходимые данные одновременно;
  • Минимизируйте количество элементов в древе DOM, убирайте лишние тэги;
  • Банально, но следите, чтобы у вас не появлялась ошибка 404;
  • Урезайте размеры Cookie: сокращайте имена, определяйте продолжительность жизни, убирайте все лишнее;
  • Во вспомогательных страницах вместо Cookie используйте вынесение всех скриптов на static.domain.com;
  • Если решили добавить Flash, заранее определите crossdomain.xml.
В-шестых, обратите внимание на изображения:
  • Поработайте над используемыми изображениями (уменьшите размеры используемой палитры, заливайте картинки в формате *PNG с помощью утилитов optipng, pngoptimizer или pngcrush, удаляйте комментарии, а в случае *jpg оптимизируйте файлы через jpegtran);
  • Для создания фоновых картинок используйте CSS спрайты;
  • Проверяйте совпадения реального размера картинки с прописанными параметрами width и height (тогда не будет проблем с масштабированием).
  • Помните, что созданный favicon.ico должен не превышать 1 Кб и быть кешируемым, ибо поисковые системы используют его в каждом десятом запросе.
И, наконец, в-седьмых, при создании сайта, оптимизированного под мобильные устройства:
  • Не создавайте страницы, превышающие 25 Кб;
  • Используйте multipart блоки, что позволяет производить автоматическую упаковку всех дополнений в приложения.

Создаю бесплатные SSL сертификаты

Сделаю вам бесплатно сертификаты. От вас требуется.
  1. Чтобы на вашем домене был РАБОЧИЙ почтовый ящик, например webmaster@ваш_домен или postmaster@ваш_домен или hostmaster@ваш_домен
  2. Обязательно проверьте сначала доставку писем на email, прежде чем писать.
  3. Потом скидываете свой домен либо в личные сообщения, либо в комменты к этому топику.
  4. Далее вам на email, который вы создали(выбор токо из тех 3х вариантов), и назвали вместе с доменом. должен будет прийти код.
  5. Далее генерируется сертификат и высылается вам либо на тот же email, либо в личное сообщение.

Читать дальше →

«Облачный» бэкап

Еще давно просил alice2k написать годный мануал про создание бэкапов в Яндекс.Диск, но с тех пор ничего не изменилось. Сегодня случайно увидел статью на wiki.firstvds.ru, но все-равно, тема до конца не раскрыта.

Если мы снова обратимся к википедии, то найдем то найдем там достататочно обширный список сервисов, готовых предоставить нам какое-то количество места на своих дисках. Где-то место предоставляют бесплатно, где-то за деньги. Для своих экспериментов я выбрал Яндекс.Диск, которых хорош тем, что доступ к нему осуществляется по протоколу WebDAV. Нетрудно догадаться, что после непродолжительного гугления я нашел davfs2 — утилиту, которая простой и понятной командой
mount -t davfs https://webdav.yandex.ru /backup

подключила мой Яндекс.Диск в директорию /backup моего VDS. Аналогичным образом подключается Microsoft SkyDrive, который так же работает по протокоду WebDAV.

В случае с FreeBSD тоже все просто
# pkg_add -r fusefs-wdfs
# echo 'fusefs_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/fusefs start
# wdfs https://webdav.yandex.ru /backup -o accept_sslcert,username=user@yandex.ru,password=youpassword

Но этот способ сработает лишь на VDS c аппаратной виртуализацией KVM, в случае же с неаппаратными виртуализациями на базе FreeBSD и OpenVZ воспользоваться этими способами не получится, т.к. у VDS нет прав на загрузку модулей ядра, однако все равно есть способ разместить архив в Webdav-хранилище на Яндексе, Skydrive или где-то еще используя curl, команда при этом будет выглядеть так
# curl --user yandex_login:yandex_password -T file_name_to_upload https://webdav.yandex.ru

В случае с Яндекс.Диском в целях повышения безопасности, можно так же воспользоваться API Яндекса для выполнения авторизации.

Восстановление базы данных ( *.frm *.MYD *.MYI )

Бывают всякие сутиации. В ноябре 2011 столкнулся с такой ситуацией: база sql утеряна, хостер выдает бэкап базы в файлах с расширениями *.frm *.MYD *.MYI

Как восстановить базу данных SQL из *.frm *.MYD *.MYI? Все, что ниже — я проделывал лично.

1. Скачиваем и устанавливаем Denwer.
2. Переходим в браузере на localhost/Tools/phpMyAdmin/ (создаем БД с именем «abcd»).
3. Переходим в директорию на диске, куда устанавливали Denwer, у меня это: «C:\WebServers\usr\local\mysql-5.1\data\» и находим папку «abcd».
4. Копируем в папку «abcd» файлы из бэкапа *.frm *.MYD *.MYI.
5. Получаем (все данные в целости и сохранности):



6. Теперь экспортируем базу из phpmyadmin в расширении .SQL.

© 1337

10 полезных приёмов в .htaccess

Предупреждение: перед редактированием файла .htaccess нужно всегда делать резервную копию работающего варианта!

Принудительная постановка замыкающего слеша
Считается, что замыкающий слеш в адресе URL очень хорошо помогает в области SEO сайта. Следующий код всегда будет добавлять слеш в адрес URL вашего сайта.
<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_URI} /+[^\.]+$
 RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>


Предотвращаем хотлинк ресурсов сайта
Хотлинк (использование изображений вашего сайта другими сайтами в сети) является весьма популярной практикой, которая прожигает впустую трафик вашего сервера. Следующий код будет перенаправлять все хотлинк запросы к изображениям вашего сайта на определенную картинку, адрес которой задается в строке 6.
RewriteEngine On
#Замените ?mysite\.com/ на адрес вашего блога
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Замените /images/nohotlink.jpg на ваше изображение с запрещением хотлинка
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]


Перенаправляем мобильные устройства
Если ваш сайт не использует адаптивный дизайн, то будет очень полезно перенаправить мобильные устройства на специальную версию сайта.
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/m/.*$
RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT}  "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
#------------- Строка ниже исключает iPad
RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$
#-------------
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC]
RewriteRule ^(.*)$ /m/ [L,R=302]


Принудительная загрузка файлов определенного типа
По некоторым причинам вам может потребоваться принудительная загрузка файлов определенных типов (например, MP3 или XLS). Нижеприведенный код будет предотвращать чтение таких файлов браузером и принудительно запускать загрузку
<Files *.xls>
ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>
<Files *.eps>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>


Междоменное использование шрифтов для FireFox
При использовании встроенных шрифтов Firefox не позволяет брать их с внешних сайтов. Следующий код для файла .htaccess позволит обойти данное ограничение.
<FilesMatch "\.(ttf|otf|eot|woff)$">
<IfModule mod_headers.c>
#Замените w.abcd.bz на адрес вашего блога
Header set Access-Control-Allow-Origin «abcd.bz»


Ускоряем сайт с помощью кэширования .htaccess
Используя кэширование .htaccess можно существенно увеличить скорость сайта.
# 1 ГОД
<FilesMatch "\.(ico|pdf|flv)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>
# 1 НЕДЕЛЯ
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# 2 ДНЯ
<FilesMatch "\.(xml|txt|css|js)$">
Header set Cache-Control "max-age=172800, proxy-revalidate"
</FilesMatch>
# 1 МИНУТА
<FilesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate"
</FilesMatch>


Отсекаем спам
Страдаете от спама на вашем блоге WordPress? Конечно, плагин Akismet может оказать существенную помощь, но и файл .htaccess не останется в стороне от борьбы с заразой. Данный код предотвращает непосредственный доступ спам ботов к файлу wp-comments-post.php, который формирует комментарии на блоге.
# Заменяем yourdomainname на имя вашего домена
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]


Приводим различные фиды к единому формату
# Заменяем URL на адрес своего блога
<IfModule mod_alias.c>
 RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://w.abcd.bz.ru/feed/
 RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ 
http://abcd.bz/comments/feed/
</IfModule>


Конфигурируем сайт для видео HTML5
HTML5 привнес много новшеств в мир веб разработки. Возможность проигрывать видео без использования FLASH является одной из лучших особенностей HTML5. Хотя нужно правильно сконфигурировать сервер для корректной работы с последними стандартами видео HTML5.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
AddType video/ogg .ogv
AddType video/ogg .ogg
AddType video/mp4 .mp4
AddType video/webm .webm
AddType application/x-shockwave-flash swf


Записываем ошибки PHP в журнал
Вместо вывода ошибок PHP на страницах вашего сайта (что дает информацию потенциальным хакерам…) можно записывать их в журнал (файл .log), скрывая от посетителей.
view sourceprint?
# отключаем вывод ошибок пользователям
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
# заносим ошибки в журнал
php_flag log_errors on
php_value error_log /location/to/php_error.log


Запускаем PHP в файлах JavaScript
При разработке кода JavaScript иногда требуется использовать PHP в файлах .js. Например, для получения данных из базы.
AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js
<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

Автоматический бэкап базы данных в DLE

В движке DataLifeEngine есть полезная функция — autobackup. По умолчанию отключена.

Сперва, мы переименуем файл autobackup.php в backup.php (можно и другое) для безопасности. Открываем файл текстовым редактором и находим строчку. Если не изменить этот параметр, то функция не запустится.
$allow_auto_backup = 0;

заменяем на:
$allow_auto_backup = 1;

Сохраняем.

На папку /backup/ поставьте права CHMOD 777 для того, чтобы туда записывались готовые файлы.

С CRON в ISPmanager возникли проблемы, с Google ничего не работало. Пришлось повозиться.

Заходим в ISPmanager — далее в Планировщик (cron) — Создать

/usr/bin/wget http://abcd.bz/backup.php

Сохраняем.

Теперь бэкапы базы пишутся в папку /backup/ в заданное время. Можно сделать закачку на удаленный FTP, но здесь только основа.