Как оптимизировать мой сайт для медленных соединений с данными?

Решения здесь работали хорошо, однако они были довольно трудоемкими. Для тех, кто хочет выполнить аналогичные улучшения в старых решениях asp.net, я настоятельно рекомендую переключить проект на MVC только для того, чтобы воспользоваться script и набором стиля..aspx работают в MVC-проектах как ожидалось.


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

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

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

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

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

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

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

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

  • Favicon, может ли это быть разрешено? Если не самое лучшее?

Обновление

  • Объединитель Mads Kristensen отлично работает. Однако я обнаружил, что есть проблемы с некоторыми страницами, которые включают 14+ ссылок axd, вызывают ошибку 404.15 (строка запроса слишком длинная, т.е. только ошибка). Моим решением для этого было gzip и base64 кодировать строку запроса.

  • Я обнаружил, что объединение jj с файлами .axd - бесплодная задача, так как файлы .axd различаются для каждой страницы. Когда мои статические файлы js seperate выдают дополнительный запрос службы, но он останется кэшированным на клиенте, вместо того, чтобы клиент повторно загрузил эти сценарии как часть объединенного файла axs js.

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

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

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

Ответ 1

1 и 2) Оптимизировать .axd: http://madskristensen.net/post/Optimize-WebResourceaxd-and-ScriptResourceaxd.aspx Отредактировать мертвую ссылку Сжатие Script Ресурс .zip Кэш Google статьи

3) HTTP 401 Unauthorized: вы настроили механизм аутентификации, это делает это. Если вы используете аутентификацию 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 в конечном итоге будут довольно сложными из-за угловых случаев, таких как...

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

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

Ответ 2

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

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

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

Другие вещи с головы:

Ответ 4

Из 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
  • Подавать масштабированные изображения
  • Подавать статический контент из домена cookieless
  • Укажите проверку валидатора
  • Указать ранний набор символов
  • Укажите заголовок Vary: Accept-Encoding
  • Укажите размеры изображения
  • Использовать эффективные селектор CSS

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

Ответ 5

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

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

Ответ 6

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

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

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

Лучшие

Ответ 7

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

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

<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 должно сохранять больше байтов, а затем вставлять их на каждую отправляемую страницу.