Любой веб-сайт с годами становится все больше и больше. Не смотря на рост скорости интернета, сайт все равно грузится все дольше и дольше. Что же делать?

Начнем пожалуй с того, что попроще. Давайте сожмем код, а точнее CSS и JavaScript. Для этих целей можно использовать множество инструментов.

Вариант первый – онлайн:

Вариант второй – grunt.

Все просто, как два пальца:

npm install -g grunt

В директории с проектом создаем файл package.json. В нем пишем обязательно в зависимостях

"grunt": "latest",
"grunt-contrib-uglify": "~0.1.1",
"grunt-recess": "latest"

Затем создаем файл Gruntfile.js, в котором пишем:

uglify: {
    dist: {
        files: {
            'app.min.js': 'app.js'
        }
    }
},

recess: {
    minify: {
        options: {
            compile: true,
            compress: true
        },
        files: {
            "styles.min.css": ["styles.css"]
        }
    }
}

Подробнее про grunt, grunt uglify, grunt recess.

Вариант третий – редакторы кода.

Для большинства редакторов кода существуют плагин, аля HTML-CSS-JS Minifier (в Sublime Text).


Неплохо было бы поджать картинки перед публикацией на сайте. Если вдруг кажется что Save for web в фотошопе достаточно – то это глубочайшее заблуждение.

Для более-менее достойного сжатия изображений рекомендую использовать:

  • Riot для Windows

  • Trimage для Linux, Mac OS, Windows


Для ускорения загрузки сайта обязательным является кэширование данных и gzip-компрессию. Для разных серверов это делается по разному. Приведу пример для сервера на Apache.

Открываем .htaccess (если его нет, то создаем в корне сайта) и пишем туда для gzip:

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

А для кэша:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>

Всякого рода параметры можно спокойно менять.

Эти маленькие хитрости несколько увеличат скорость загрузки вашего сайта/веб-аппа.