Нужны мысли и советы, если мне нужно сделать что-то еще, чтобы улучшить производительность моего веб-приложения - PullRequest
1 голос
/ 29 декабря 2010

Я работаю над веб-приложением, в котором для отображения данных используется большое количество Ajax, и мне интересно, могу ли я получить какие-либо советы о том, что еще можно сделать, чтобы ускорить приложение, уменьшить пропускную способность и т. Д.

Я использую php, mysql, freeBSD, Apache, Tomcat для своей среды.Я владею сервером и имею полный доступ ко всем файлам конфигурации и т. Д.

У меня включено сжатие gzip deflate в файле apache http.conf.Я запутал и минимизировал все файлы .js и .css.

Мое веб-приложение работает в общем порядке.После входа пользователь попадает на страницу index.php.Все ссылки на странице индекса являются вызовами ajax для чтения функции класса .php, которая будет извлекать html в строку и отображать ее внутри div где-то на главной странице index.php.

Большинство функций, возвращающихhtml возвращает строки вроде:

<table>
    <tr>
       <td>Data here</td>
    </tr>
</table>

Я не возвращаю полный текст "<html><head>", потому что он уже существует на главной странице index.php.

Однако,возвращаемые строки html форматируются с помощью табуляции, пробелов, комментариев и т. д. для удобства чтения кода.Должен ли я уделить время минимизации этих страниц и удалить вкладки, комментарии, пробелы?Или это незначительно, чтобы минимизировать страницы .php, потому что это на сервере?

Полагаю, я пытаюсь выяснить, приведет ли то, как я структурировал веб-приложение, к проблемам с пропускной способностью, и если я смогу уменьшить размер файла класса .php, могу ли я повысить производительность, уменьшив их.Большинство классов .php имеют размер 40-50 КБ, самый большой из которых - 99 КБ.

Для скорости я подумал об использовании memcache, но не знаю, стоит ли добавлять его после того, как этот факт того стоит, и я не понимаюЯ не знаю, как это реализовать.Я не знаю, включено ли какое-либо кэширование на сервере ... Я думаю, что оставил это на усмотрение браузера ... Я не очень хорошо разбираюсь в области кэширования.

Правотеперь сайт не выглядит медленным, но я единственный пользователь ... Мне просто интересно, стоит ли это дополнительных усилий.

Буду признателен за любые советы или статьи.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 29 декабря 2010

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

Однако кэш кода операции (например, APC ) можно использовать сразу.

0 голосов
/ 30 декабря 2010

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

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


APC

Вы всегда должны использовать APC для компиляции и кэширования php-скрипта в код операции .

Почему?

  1. изменения практически не вносятся после развертывания
  2. если каждый сценарий готов к операции, вашему серверу не требуется компилировать текстовый сценарий в двоичный код операции на лету
  3. скомпилируйте один раз и используйте много

Каковы преимущества?

  1. меньший цикл выполнения для компиляции простого текстового скрипта
  2. меньшее потребление памяти (оба связаны)
  3. простая математика: если запрос обрабатывается за 2 секунды в вашей текущей среде, теперь с APC обслуживается за 0,5 секунды, вы получаете 4 раза лучшую производительность, за 2 секунды с APC можно обработать 4 запроса. Это значит, что раньше вы могли разместить до 50 одновременных пользователей, теперь вы можете разрешить 200 одновременных пользователей

Memcache - НЕТ GO?

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

и т.д.

  1. статические файлы с заголовком истечения срока действия ( концепция основного кэша , запрос не самый быстрый и экономит пропускную способность)
  2. кешировать ваш дорогой запрос в memcache / disk-cache или даже в базу данных (дорогой запрос, такой как генерация отчетов / статистики)
  3. всегда проверяйте свой код для лучшей оптимизации (но не переусердствуйте)
  4. всегда делайте тесты и сравнивайте результаты (были и текущие)
  5. Точная настройка конфигурации apache / tomcat
  6. рассмотрите возможность перекомпиляции PHP с минимальным количеством библиотек / расширений и загрузкой необходимых библиотек только во время выполнения (например, приложение, использующее mysqli, не использующее PDO, нет причин его сохранять)
0 голосов
/ 29 декабря 2010

Моя рекомендация: НЕ отправлять HTML через вызовы AJAX. Вместо этого отправьте только базовые данные (часть «Данные здесь») через JSON, затем обработайте эти данные через функцию на стороне клиента, которая украсит их правильным HTML, и затем внедрите их в DOM. Это резко ускорит вызовы Ajax.

...