Ускорение веб-сайта или приложения ASP.Net - PullRequest
25 голосов
/ 14 августа 2008

У меня есть веб-сайт ASP.Net 2.0 с поддержкой Ajax.Net. Хостинг как для сайта, так и для базы данных находится вне моего контроля, как и схема базы данных. При тестировании на оборудовании я контролирую работу сайта, однако на оборудовании клиента наблюдаются заметные задержки при перезагрузке или смене страниц.

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

Какие есть еще способы оптимизации веб-сайта .Net?

UPDATE: Я запустил YSlow на сайте, и больше всего пострадали области количества загружаемых JavaScript и таблиц стилей (23 файла JS и 5 таблиц стилей). Все кроме одной (основная таблица стилей) были вставлены Ajax.net и Asp. Почему так много?

Ответы [ 12 ]

23 голосов
/ 14 августа 2008
  1. Объединение скриптов в .net 3.5 SP1
  2. Лучшие практики для быстрых сайтов
  3. HTTP-сжатие (gzip)
  4. Сжатие JS / CSS (отличается от сжатия http, минимизировать JavaScript)
    1. Компрессор YUI
    2. .NET YUI Compressor

Мой лучший совет - проверить содержимое YUI . У них есть несколько замечательных статей, в которых рассказывается о таких вещах, как CSS-спрайты , и есть несколько хороших библиотек javascript, помогающих уменьшить количество запросов , которые делает браузер.

5 голосов
/ 14 августа 2008

Если вы используете Firefox для тестирования своего сайта, вы можете попробовать отличное расширение Firefox от Yahoo! называется YSlow .

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

3 голосов
/ 14 августа 2008

По умолчанию выключите viewstate, это будет разница между днем ​​и ночью даже на самых простых страницах.

2 голосов
/ 15 августа 2008

Я написал сообщение в блоге об улучшении производительности страниц ASP.NET пару месяцев назад. Вот несколько быстрых и простых способов -

  • Отключить просмотр состояния
  • Отключить проверку события
  • Реализовать HTTP-сжатие gzip / deflate для уменьшения размера ответа (количество байтов, которое сервер должен отправить клиенту)
  • Попробуйте оптимизировать / минимизировать вызовы базы данных для каждого запроса
1 голос
/ 20 ноября 2008

Общее правило при совместном использовании ASP.NET и Ajax (любой библиотеки Ajax) состоит в том, чтобы избежать слонов ваших вещей Page_Load и Page_Init (и их методов), поскольку они будут выполняться при каждом запросе Ajax.

Когда это будет сказано, я серьезно откажусь от ASP.NET AJAX и буду использовать что угодно еще ...

Anthem.NET, AjaxPRO.NET, jQuery или что-то еще, кроме ASP.NET AJAX ...

Конечно, я бы сам использовал Ra-Ajax , поскольку это мой проект. Но опять же я предвзятый ...

1 голос
/ 28 августа 2008

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

Объединение Scirpt для AJAX уже упоминалось, но я не заметил упоминания о ScriptReferenceProfiler MS, выпущенном на codeplex, чтобы помочь выяснить, что объединять. Майк Ормонд имеет хорошую отправную точку для этого .

Еще один совет, если вы делаете много INSERT для своей базы данных, - это дважды проверьте, включено ли кэширование диска вашего сервера. Например, импортер данных сделал 1,2 миллиона вставок во время выполнения. Заняло 4 часа и менялось без кеширования. Заняло 16 минут с этим.

1 голос
/ 14 августа 2008
1 голос
/ 14 августа 2008

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

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

1 голос
/ 14 августа 2008

Я думаю, что вам действительно нужно иметь возможность получать реальные данные / телеметрию PerfMon из приложения во время его работы в производстве, чтобы иметь возможность принять осознанное решение о том, что оптимизировать.

В качестве подсказки я бы позаботился о том, чтобы ваше приложение было развернуто как Release build и установите debug = "false" в разделе " compilation " вашей сети. конфигурации.

0 голосов
/ 18 сентября 2008

Вы также можете посмотреть на кэширование вывода ASP.NET, которое может быть применено довольно детально к различным частям вашей страницы:

http://msdn.microsoft.com/en-us/library/xsbfdd8c(VS.71).aspx

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