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

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

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

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

Ответы [ 14 ]

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

Одно из лучших руководств по ускорению загрузки вашего сайта:

http://developer.yahoo.com/performance/rules.html


Обновление: у Google теперь есть отличное руководство

http://code.google.com/speed/page-speed/docs/rules_intro.html

Наряду с еще лучшим аддоном для Firefox . В моем тестировании аддон Page Speed ​​от Google намного лучше, чем YSlow. Он дает гораздо более подробный анализ и более разумный совет (вместо того, чтобы рекомендовать CDN для небольших сайтов, таких как YSlow)

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

Одним из полезных инструментов является YSlow , который является инструментом от Yahoo, который помогает выявлять проблемы производительности веб-страниц. Кроме того, Yahoo Best Practices для ускорения вашего сайта хороший список.

Тем не менее, смотрите запись в блоге Джеффа Проблемы с Yahoo - это не ваши проблемы , чтобы взглянуть на эту проблему.

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

Кеширование, кеширование, кеширование.

Memcached

APC

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

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

Yahoo: «Поместите таблицы стилей вверху», «Поместите сценарии внизу».

Это ускорило мой недавний сайт больше, чем любая другая оптимизация.

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

1) mod_gzip / mod_deflate! Это такое простое исправление, я удивлен, что по умолчанию оно не включено.

2) Поиграйте с URL-адресами, чтобы браузеры всегда могли кэшировать ваши файлы JS и CSS. Другими словами, создайте URL-адреса так:

http://www.yourdomain.com/js/mad_scriptz-v123.js

Затем используйте mod_rewrite и удалите "-v123":

<IfModule mod_rewrite.c>
    # http://www.thinkvitamin.com/features/webapps/serving-javascript-fast
    RewriteEngine on

    RewriteRule ^/(.*)\-v[0-9.]+\.(css|js|gif|png|jpg|xap)$ /$1.$2  [L]

</IfModule>

Теперь apache будет искать «/js/mad_scriptz.js» ... Каждый раз, когда вы меняете статический контент, просто увеличивайте номер версии, чтобы браузеры перезагружали контент. У меня обычно есть переменная шаблона, которая содержит глобальный номер версии, к которой все привязано. Не самый эффективный, но работает для моих целей. Если вы можете привязать номер версии к вашей системе сборки или к хешу файла, это было бы очень мило.

Получить mod_expires вверх, так что все ваши статические вещи истекает через годы:

<IfModule mod_expires.c>
    ExpiresActive On
    # all in seconds...  
    ExpiresByType image/x-icon A2592000
    ExpiresByType image/gif A2592000
    ExpiresByType image/jpeg A2592000
    ExpiresByType image/png A2592000
    ExpiresByType application/javascript A2592000
    ExpiresByType application/x-javascript A2592000
    ExpiresByType application/x-shockwave-flash A2592000
    ExpiresByType application/pdf A2592000
    ExpiresByType text/css A2592000
    ExpiresByType application/rdf+xml A1800
</IfModule>

Обновление: было отмечено, что не все браузеры или поисковые системы, как gzip'd контент. Не включайте его вслепую, как я предлагаю выше. Удостоверьтесь, что вы не кормите антикварные браузеры gzip, даже если они это принимают (некоторые из них будут раздражены сжатым javascript). Документация для mod_gzip и mod_deflate содержит примеры, которые должны работать нормально (я полагаю, что они есть, или люди отправят им электронное письмо с изменениями :-).

Я должен также упомянуть, что, по моему опыту, если у вас есть обратный прокси-сервер между вашими серверами Apache mod_gzip и остальным миром, вам нужно остерегаться. Squid 2.6 часто вводит Apache в заблуждение, когда это необходимо, и что еще хуже, он кеширует несжатые версии и передает их в браузеры, которые могут обрабатывать содержимое gzip. Не знаю, если 3.0 исправит это, и я не знаю, если что-то не так в моей конфигурации (сомневаюсь). Просто остерегайтесь: -)

Это сказал. Включи это. Серьезно: -)

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

Пишите столько кода, сколько необходимо, но не слишком мало.

Меньше кода, меньше для компиляции, меньше для отправки, меньше для получения, меньше для обработки, меньше для отображения.

3 голосов
/ 25 февраля 2009
  • Используйте CSS-спрайты для уменьшения обратного отсчета вашего HTTP-запроса.
  • Убедитесь, что все ваши изображения имеют приличный размер.
  • Убедитесь, что у вас действительно хороший хост с хорошим upstream и downstream.
  • Убедитесь, что ваш сервер может выполнять ваши сценарии своевременно, вы можете проверить это с помощью функции microtime.
  • Убедитесь, что ваш код оптимизирован должным образом.
1 голос
/ 25 февраля 2009

Сжатие всех ваших файлов, включая css и js файлы, а также ваши php файлы. Выполните как можно меньше вызовов базы данных и, как было указано ранее, кэшируйте все результаты.

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

в дополнение к тому, что было сказано:

  • запутать и сжать css
  • запутать и сжать ваш javascript
  • меньше файлов == меньше http запросов == быстрее сайт == все ваши CSS в одном файле, все ваши javascript в одном файле
1 голос
/ 25 февраля 2009

Несколько случайных точек.

Рендеринг постепенно, а не встраивание в память и отправка в конце дает отчетливое впечатление скорости.

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

Особенно в PHP, будьте осторожны при копировании огромных объемов данных. PHP 4 был печально известен этим из-за того, что он «копируется по умолчанию», но все еще слишком легко иметь огромное количество данных для передачи в PHP 5. Другими словами: не копируйте (или создавайте!) Строки, массивы и предметы излишне; работать с ними на месте и вместо этого передавать ссылки.

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