Как оптимизировать мой сайт для медленных подключений к данным? - PullRequest
10 голосов
/ 05 августа 2011

Решения здесь работали хорошо, но они были довольно трудоемкими. Любому, кто хочет выполнить аналогичные усовершенствования в старых решениях asp.net, я настоятельно рекомендую переключить проект на MVC, чтобы воспользоваться преимуществами объединения сценариев и стилей. Файлы .aspx работают как положено в проектах MVC.


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

Я собираюсь начать с нескольких «быстрых побед», прежде чем приступить к мелочам - разорвать UpdatePanels, удалить ненужный контент и все, что я могу придумать. Сейчас у меня есть несколько вещей, которые, я думаю, я готов реализовать
К ним относятся

Редактировать: Инструменты минимизации активов и очистки пустого пространства работают довольно хорошо.

Однако у меня есть несколько вещей, которые я не знаю, как я буду решать.

  1. Некоторые ресурсы Microsoft (WebResource.axd?d=blahblah и ScriptResource.axd?d=blahblah) не минимизированы. Это и Это и некоторые другие в зависимости от страницы. Microsoft.Ajax в порядке, хотя. Как я могу вручную минимизировать эти файлы, если они не минимизируются автоматически? Я что-то пропустил?

  2. Можно ли объединить ресурсы Microsoft в один файл js с моим javascript?

  3. 401 ошибок. В fiddler я вижу, что мой первый заход на веб-сайт всегда дает ошибку 401, за которой сразу следует обычное 200. Кроме того, другие ресурсы также будут случайным образом иметь 401 при первом вызове. Это какой-то параметр IIS, который нужно настроить, чтобы удалить этот ненужный вызов?

  4. Javascript внутри aspx файлов. К сожалению, у нас есть много js внутри наших файлов aspx, а также много javascript, который визуализируется с использованием ScriptManager.RegisterStartupScript в нашем коде. Как мне минимизировать JavaScript в тегах <script> в разметке aspx?

  5. Фавикон, можно ли это подделать? Если нет, то какая следующая лучшая вещь?

Обновление

  1. Комбайнер Мэдса Кристенсена прекрасно работает. Однако я обнаружил, что есть проблемы с некоторыми страницами, которые содержат 14+ ссылок на Axd, которые приводят к ошибке 404.15 (строка запроса слишком длинная, т.е. только ошибка). Моим решением для этого было gzip и base64 кодировать строку запроса.

  2. Я обнаружил, что объединение моих js-файлов с файлами .axd - бесполезная задача, поскольку файлы .axd различны для каждой страницы. Отдельные статические js-файлы приводят к дополнительному запросу на обслуживание, но он остается кэшированным на клиенте вместо того, чтобы клиент заново загружал эти сценарии как часть объединенного js axd-файла.

  3. Я включил анонимную аутентификацию. Больше никаких проблем.

  4. Нет прогресса.

  5. Я обнаружил, что необходимо поместить favicon.ico в корневой каталог. Я думаю, что это может быть только из-за того, как было разработано мое приложение.

Ответы [ 7 ]

5 голосов
/ 10 августа 2011

Слияние ресурсов сценариев Microsoft: Ознакомьтесь с моим ContentGator проектом, который я использовал для перехвата запросов к файлам WebResource (и других сценариев и css) и объединения их вместе.Я не обновлял его в течение пары лет, поэтому я не могу сказать, насколько хорошо он будет работать «из коробки», вы, по крайней мере, сможете использовать часть кода.Я не думаю, что я помню добавление минификации, но вы сможете добавить ее довольно легко.Я думаю, что он также имеет либо хуки в RegisterStartupScript, либо альтернативу ему, где вы снова сможете подключиться к минификации.

Фавикон , насколько я знаю, не может быть отключен, как это запрашивается по умолчанию браузером.Если вы действительно этого не хотите, вы, вероятно, можете просто установить 1x1 пиксель ico, чтобы не обслуживать 404, а последующие запросы приведут к 304. Это не мешало бы использовать CDN для этого и всех остальных.а также другие ваши статические ресурсы.

Кроме того, ознакомьтесь с http://developer.yahoo.com/yslow/ для других более общих советов по веб-оптимизации.

Другие вещи, которые мне не нравятся:

4 голосов
/ 11 августа 2011

1 и 2) Оптимизация .axd: http://madskristensen.net/post/Optimize-WebResourceaxd-and-ScriptResourceaxd.aspx РЕДАКТИРОВАТЬ неработающую ссылку Сжатие ресурса сценария .zip Google Cache статьи

3) HTTP 401 не авторизован: вы настроили механизм аутентификации.Если у вас включена аутентификация Windows, но вы ее не используете ...

4) Встроенный JS: MS AJAX Minifier

http://www.codeproject.com/Articles/81317/Automatically-compress-embedded-JavaScript-resourc

http://stephenwalther.com/blog/archive/2009/10/16/using-the-new-microsoft-ajax-minifier.aspx

Вы мало что можете сделать для JS, смешанного с вашей разметкой.Вы можете создать свою собственную утилиту для анализа его из ASPX с RegEx и создать файл, который содержит все это на страницу, затем свернуть этот файл и вставить ссылку на 1 скрипт.Регулярные выражения для захвата всего в тегах SCRIPT будут довольно сложными из-за угловых случаев, таких как ...

<script type="text/javascript">
document.write("<script>Dynamica, RegEx don't stop here -></script>");
</script>

5) Favicon: у вас либо есть тег LINK на ваших страницах, которые ссылаютсяэто с REL = "ярлык" или у вас есть файл "favicon.ico" в корне вашего веб-сайта.Если у вас нет тегов LINK, браузер автоматически проверит файл favicon.ico в корне вашего сайта.

3 голосов
/ 05 августа 2011

Также следует рассмотреть возможность включения сжатия в IIS.

Сжатие IIS6

Сжатие IIS7

1 голос
/ 12 августа 2011

С gtmetrix.com :

  • Избегайте неправильных запросов
  • Избегайте CSS @ import
  • Избегать выражений CSS (не рекомендуется)
  • Избегать document.write
  • Объединить внешний CSS
  • Объединить внешний JavaScript
  • Объединение изображений с использованием CSS-спрайтов
  • Отсрочка загрузки JavaScript
  • Отсрочка разбора JavaScript
  • Включить сжатие gzip
  • Включить Keep-Alive
  • встроенный маленький CSS
  • Встроенный маленький JavaScript
  • Использование кэширования в браузере
  • Использование кэширования прокси (не рекомендуется)
  • Сделать перенаправления целевой страницы кэшируемыми
  • Сократить CSS
  • Свернуть HTML
  • Сократить JavaScript
  • Минимизировать размер файла cookie (устарело)
  • Минимизировать поиск DNS
  • Минимизация перенаправлений
  • Свернуть размер запроса
  • Оптимизация изображений
  • Оптимизировать порядок стилей и скриптов
  • Распараллелить загрузку по именам хостов
  • Предпочитают асинхронные ресурсы
  • Поместите CSS в заголовок документа
  • Удалить строки запроса из статических ресурсов
  • Удалить неиспользуемый CSS
  • Обслуживание ресурсов с согласованного URL
  • Обслуживание масштабированных изображений
  • Обслуживание статического контента с домена без файлов cookie
  • Укажите валидатор кэша
  • Укажите набор символов заранее
  • Укажите заголовок Vary: Accept-Encoding
  • Укажите размеры изображения
  • Используйте эффективные селекторы CSS

Вы можете использовать инструмент gtmetrix, ySlow или Google Page Speed, чтобы увидеть, как все это влияет на него, но этот инструмент gtmetrix, как правило, потрясающий и сочетает в себе функции для вас, а также некоторые автогенерации, которые дают улучшенные версии CSS-файлов и т. д.

0 голосов
/ 14 августа 2011

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

Невозможно отключить Favicon, но сам запрос можно устранить в современных браузерах с помощью data: url.Например, это может привести к тому, что у страницы будет иконка slashdot без отправки какого-либо запроса:

<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAB4eE0AX18OAP///wBeXisAYWETANPTxACrq4cAgYEaAEhJEgBKSiYAkJF3AL29pgBiYjAAVFQQADQ0CgBCQg4AWe7u7u7u7pWe7u7u7u7u6e7u7u7u7u7u7/ZVr/+rz/7v+iIp8CJf/v//UibwIl////8CIj+mz//4iIUiuIiIj/iIjCIgiIiPjd3dsiXd3diN3d1CIq3d2I3d3dYiLd3Y0RERFGZsERHUERERERERRDd3d3d3d3dzXERERERERMUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" type="image/x-icon" />

Имейте в виду, что включение кэширования favicon на стороне клиента должно сохранять больше байтов, чем встраивать его в каждую отправляемую страницу.

0 голосов
/ 13 августа 2011

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

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

В любом случае, это два замечательных ресурса, которые можно начать с двух гигантов: http://developer.yahoo.com/performance/rules.html http://code.google.com/speed/

Лучший

0 голосов
/ 12 августа 2011

http://wiki.asp.net/page.aspx/80/aspnet-optimization/

имеет большой набор ресурсов по различным элементам, которые можно / нужно настроить для создания веб-приложений speedster на asp.net!Njoy:)

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