Ускорение веб-сайта или приложения ASP.Net

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

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

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

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

14.08.2008 18:52:54
12 ОТВЕТОВ
РЕШЕНИЕ
  1. Объединение скриптов в .net 3.5 SP1
  2. Лучшие практики для быстрых сайтов
  3. Сжатие HTTP (gzip)
  4. Сжатие JS / CSS (отличается от сжатия http, минимизировать JavaScript)
    1. Компрессор YUI
    2. Компрессор .NET YUI

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

22
14.08.2008 19:08:26

Вы можете включить сжатие на основе поддержки вашего клиента. Смотрите эту статью: текст ссылки

0
14.08.2008 18:55:21

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

0
14.08.2008 18:55:58

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

3
14.08.2008 19:06:44

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

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

1
14.08.2008 19:10:06

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

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

4
14.08.2008 19:11:07

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

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

1
14.08.2008 19:28:00
1
14.08.2008 19:53:55

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

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

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

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

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

1
28.08.2008 11:43:02

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

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

0
17.09.2008 22:58:58

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

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

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

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

1
20.11.2008 09:06:08