Быстрая загрузка веб-страниц - PullRequest
11 голосов
/ 25 февраля 2009

Мы планируем разработать новый сайт. Наша цель - загружать веб-страницы. быстро. Каковы все методы, которым мы должны следовать.

Может ли кто-нибудь дать мне хорошие предложения, ссылки на форумы или статьи.

Наша платформа - PHP, MySQL, Javascript и AJAX.

Ответы [ 14 ]

1 голос
/ 25 февраля 2009

Используйте профилировщик для PHP, чтобы убедиться, что ваш код выполняется с приличной скоростью. Рефакторинг (где это возможно), если производительность может быть улучшена.

0 голосов
/ 14 апреля 2018

1. Включить Keep-Alive

HTTP Keep Alive относится к сообщению, которое отправляется между клиентским компьютером и веб-сервером и запрашивает разрешение на загрузку файла. Включение Keep Alive позволяет клиентскому компьютеру загружать несколько файлов без повторного запроса разрешения, что помогает сэкономить пропускную способность.

Чтобы включить Keep Alive, просто скопируйте и вставьте приведенный ниже код в ваш файл .htaccess.

<ifModule mod_headers.c>
    Header set Connection keep-alive
</ifModule>

2. Отключить хотлинкинг изображений

Когда «горячая ссылка» другого сайта на ваши изображения снижает пропускную способность, замедляя работу вашего сайта. Чтобы другие сайты не могли контролировать вашу пропускную способность, вы можете добавить этот фрагмент кода в свой файл .htaccess. Не забудьте изменить бит, который говорит your_Domain_name.com!

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?your_Domain_name.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]

3. Сожмите ваш сайт с помощью gzip

Gzip - это простой метод сжатия файлов вашего сайта для экономии пропускной способности и ускорения загрузки страницы. Gzip работает, сжимая ваши файлы в zip-файл, который быстрее загружается браузером пользователя. Затем браузер пользователя разархивирует файл и покажет содержимое. Этот метод передачи контента с сервера в браузер гораздо более эффективен и экономит много времени.

Вы можете включить Gzip, просто добавив следующий код в ваш файл .htaccess:

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

# Or, compress certain file types by extension:

SetOutputFilter DEFLATE

Чтобы проверить, включен ли Gzip или работает на вашем сайте, вы можете использовать Gziptest.com.

4. Включить заголовки Expires

Заголовки Expires сообщают браузеру, должны ли они запрашивать определенный файл с сервера или они должны получить его из кэша браузера.

Вся идея Expires Headers заключается не только в том, чтобы уменьшить загрузку с сервера (постоянная загрузка одного и того же файла, когда он не модифицирован, тратит драгоценное время загрузки), а скорее уменьшить количество HTTP-запросов к серверу.

Так в файл .htaccess входят следующие вещи

<IfModule mod_expires.c>
    # Enable expirations
    ExpiresActive On 
    # Default directive
    ExpiresDefault "access plus 1 month"
    # My favicon
    ExpiresByType image/x-icon "access plus 1 year"
    # Images
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    # CSS
    ExpiresByType text/css "access plus 1 month"
    # Javascript
    ExpiresByType application/javascript "access plus 1 year"
</IfModule>

5. Замените PHP статическим HTML, где это возможно

PHP отлично подходит для повышения эффективности вашего сайта и уменьшения необходимости многократного ввода одной и той же информации. Однако при вызове информации через PHP используются ресурсы сервера, и его следует заменить статическим HTML, где он не сохраняется в любое время

6. Укажите набор символов в заголовках HTTP

По той же причине, что и выше, полезно указывать набор символов в заголовках HTTP-ответа, чтобы браузеру не приходилось тратить дополнительное время на выяснение того, какой набор символов вы используете.

Вы можете сделать это, просто добавив тег набора символов UTF-8 в раздел вашего сайта.

7. Включить сжатие на выходе

Сжатие может быть выполнено двумя способами.

Apache фактически имеет два варианта сжатия:

  • mod_deflate проще в настройке и является стандартным.
  • mod_gzip кажется более мощным: вы можете предварительно сжать содержимое.

Два варианта сжатия файлов: Deflate и GZIP.

  • Deflate - это опция, которая автоматически поставляется с сервером Apache и простая в настройке.
  • GZIP, с другой стороны, должен быть установлен и требует немного больше работы для установки. Тем не менее, GZIP достигает более высокой степени сжатия и, следовательно, может быть лучшим выбором, если ваш веб-сайт использует страницы с большим количеством изображений или файлов большого размера.

Deflate работает быстро и работает, поэтому я его использую; используйте mod_gzip, если это плавает на вашей лодке. В любом случае Apache проверяет, отправил ли браузер заголовок «Accept-encoding» и возвращает сжатую или обычную версию файла. Тем не менее, некоторые старые браузеры могут иметь проблемы (подробнее ниже), и есть специальные директивы, которые вы можете добавить, чтобы исправить это.

zlib.output_compression Независимо от того, чтобы прозрачно сжимать страницы. Если эта опция установлена ​​на "Вкл"в php.ini или конфигурации Apache, страницы сжимаются, если браузер отправляет «Accept-Encoding: gzip» или "спустить" заголовок.

PHP По умолчанию: отключено

В Php.ini

zlib.output_compression = On

Если вы не можете изменить файл .htaccess, вы можете использовать PHP для возврата сжатого содержимого. Дайте вашему HTML-файлу расширение .php и добавьте этот код вверху:

В PHP:

<?php 
    if (substr_count($_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’))
    ob_start(“ob_gzhandler”); else ob_start(); 
?>

В этом разделе будет включен модуль apache mod_deflate, который сжимает текст, CSS и JavaScript перед его отправкой в ​​браузер. Это приводит к меньшему размеру загрузки. Включите его в файле .htaccess, чтобы он выглядел следующим образом:

<IfModule mod_deflate.c>

############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip

    # Insert filter on all content
    SetOutputFilter DEFLATE
    # Insert filter on selected content types only
    AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/javascript application/x-javascript text/xml application/xml application/xhtml+xml image/x-icon image/svg+xml application/rss+xml application/x-font application/x-font-truetype application/x-font-ttf application/x-font-otf application/x-font-opentype application/vnd.ms-fontobject font/ttf font/otf font/opentype 

    # Netscape 4.x has some problems...
    BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip

    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    # Don't compress images
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

    # Make sure proxies don't deliver the wrong content
    Header append Vary User-Agent env=!dont-vary

</IfModule>

**

8. Включить кэш, OPcache и eAccelerator (еще один инструмент кэширования PHP)

Memcache особенно полезен для уменьшения нагрузки на вашу базу данных, в то время как механизмы кэширования байт-кода, такие как APC или OPcache, отлично подходят для экономии времени выполнения при компиляции скриптов.

9. Воспользуйтесь преимуществами собственных функций PHP

По возможности, старайтесь использовать преимущества нативных функций PHP вместо того, чтобы писать свои собственные функции для достижения того же результата. Потратив немного времени на изучение использования собственных функций PHP, вы не только сможете быстрее написать код, но и сделаете его более эффективным.

10. Вырежьте ненужные расчеты

При многократном использовании одного и того же значения переменной вычисляйте и назначайте значение в начале, а не выполняйте вычисления для каждого использования. Если вы просматриваете массив, например, count () его заранее, сохраните значение в переменной и используйте его для своего теста. Таким образом, вы избегаете ненужного запуска тестовой функции при каждой итерации цикла.

11. Используйте самые сильные функции Str

Хотя str_replace быстрее, чем preg_replace, функция strtr в четыре раза быстрее, чем str_replace.

12. Палка с одинарными кавычками

По возможности используйте одинарные кавычки, а не двойные. Двойные кавычки проверяют переменные, которые могут снизить производительность.

13. Попробуйте три знака равенства

Поскольку «= = =» проверяет только закрытый диапазон, это быстрее, чем «= =» для сравнения.

14. Используйте isset ()

по сравнению с

count (), strlen () и sizeof (),

isset () - более быстрый и простой способ определить, больше ли значение 0.

15. Вырежьте ненужные классы

Если вы не собираетесь использовать классы или методы несколько раз, тогда они вам действительно не нужны. Если вам необходимо использовать классы, обязательно используйте методы производных классов, так как они работают быстрее, чем методы в базовых классах.

16. Закрыть соединения с базой данных

Удаление переменных и закрытие соединений с базой данных в вашем коде сэкономит драгоценную память.

17. Ограничить количество обращений к вашей базе данных

Совокупность запросов может сократить количество обращений к вашей базе данных, что ускорит работу.

0 голосов
/ 05 июня 2009

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

0 голосов
/ 03 марта 2009

Вот один совет, который я всегда нахожу полезным: Если у вас много крошечных изображений, поместите их все в одно мозаичное изображение. В ваших объявлениях CSS управляйте областью просмотра элемента html, манипулируя координатами x и y фона:

.icon {
    background-image:url(static/images/icons.png);
    height:36px;
    width:36px;
}
.food {
    background-position:-52px -8px;
}
.icon_default {
    background-position:-184px -96px;
}

Черепица может быть выполнена в скрипте Python или вручную, если у вас есть управляемый набор.

Gmail также делает это. Смотри: http://mail.google.com/mail/images/2/5/greensky/icons7.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...