2015-09-25 4 views
2

Мы строим сайт Kentico 8.2 с использованием модели портала ASPX +. Глядя на визуализированный HTML на моем сайте, я вижу много ненужного Javascript, который Kentico сбросил на мою страницу. Более того, это происходит в верхней части моей страницы в верхней части элемента формы.Управление/удаление ненужных сценариев на сайте Kentico

Например, это рендеринг функции JS ASP.NET __doPostBack, хотя я не использую какие-либо элементы управления, которые этого требуют. Другие скрипты добавляются в качестве WebResource.axd и ScriptResource.axd.

С первого взгляда кажется, что эти сценарии представляют собой структуру Microsoft AJAX, используемую с UpdatePanel и т. Д. Я полагаю, что они добавили функции менеджера портала при использовании этой страницы в пользовательском интерфейсе Kentico. Предположительно, они также используются с некоторыми встроенными веб-частями.

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

Я пробовал скрывать элементы управления <ajaxToolkit:ToolkitScriptManager /> и <cms:CMSPortalManager /> на моей главной странице при рендеринге реального сайта, но это приводит к тому, что шаблоны имеют <cms:CMSWebPartZone />.

Кто-нибудь знает, как обеспечить устранение этого раздувания, когда это не требуется? Или, по крайней мере, вызывать эти сценарии в конце страницы, чтобы они не слишком мешали производительности?

ответ

3

К сожалению, строительные площадки в пределах Kentico с использованием страниц ASPX и ASPX + Portal автоматически генерируют дополнительную разметку, такую ​​как __doPostBack, WebResource.axd и ScriptResource.axd.

Я бы не рекомендовал удалить какой-либо код по умолчанию на вашей главной странице. Это приведет к поломке вещей (как вы уже пережили).

Однако наличие этой разметки не должно вызывать серьезной проблемы при работе страницы. Понятно, что это не идеально.

Что я могу сделать, чтобы уменьшить попадание является следующее:

  • Отключение ViewState везде, где возможно. Например, либо на уровне страницы, либо на уровне Webpart/User control.
  • Переместите ViewState в нижней части страницы (в настройках Kentico), поэтому страница меньше «тяжелая».
  • Убедитесь, что вы кешируете все, что можете. Например, мебель для сайта, используемая вашими веб-страницами и шаблонами (изображения/js и т. Д.) На уровне IIS и на уровне Kentico с использованием их API.

Читая эту статью из документации Kentico предоставляет больше информации в большей глубине: Optimizing website performance

Если вы действительно хотите «полный контроль» над HTML вынесенным Кентико это позволяет создавать шаблоны с использованием MVC. Но это не даст вам гибкости для изменения шаблонов страниц, перемещая веб-части в администрировании CMS. Я предполагаю, что вы выбрали подход Portal Portal именно по этой причине.

Надеюсь, это поможет.

+0

Спасибо @sbhomra - Я боялся, что это будет ответ. Я знаю о других показателях производительности Kentico, но это просто раздражает, что CMS сбрасывает весь этот мусор в верхней части страницы. Цените, что это не масштабная сделка, а автоматизированные тесты производительности, как правило, подбирают этот материал. – getsetcode

2

В дополнение к замечательному ответу @ sbhomra у меня есть несколько вопросов, предложений и комментариев.

Сколько секунд или миллисекунд вы говорите по поводу производительности? Если вы думаете, что получите несколько миллисекунд назад, не стоит пытаться восстановить все функциональные возможности. Если вы говорите секунду или два, там примерно 15 разных вещей, которые вы можете изменить в настройках и свой код, чтобы получить все обратно. Подумайте, сколько кода вы собираетесь писать, поддерживать и обновлять, чтобы получить второй или меньше назад?

Ресурсы загрузки WebResource и SciptResource, которые скомпилированы в библиотеки на веб-сайте. Поэтому, если кто-то создал внешнюю библиотеку и эта библиотека загрузила изображение, которое было скомпилировано в нее, вы получите эту ссылку WebResource.axd на своем сайте. Вам придется физически удалить эти библиотеки из экземпляра Kentico.

Хотя я не рекомендую его строго, потому что вы теряете столько функциональности и имеете так много лишнего кода, MVC предоставит вам элемент управления, который вы ищете.

+0

Спасибо @ brenden-kehren - сейчас меня больше всего беспокоят результаты автоматических тестов производительности, которые отмечают вас для загрузки скриптов перед контентом. К сожалению, MVC в настоящее время не является вариантом. Спасибо за советы в любом случае. – getsetcode

+1

Опять же, я спрошу, о каких проблемах с производительностью вы говорите? Если вы собираетесь потратить время, пытаясь отследить эти несколько сценариев, прежде чем я думаю, что вы тратите свое время. Есть и другие вещи, которые могут улучшить ваш показатель производительности, например, указать столбцы в ваших веб-сайтах, используя кеширование (которое многие разработчики Kentico, которые пишут собственный код, не используют), сводят к минимуму ваш результат и т. Д. Это принесет вам больше тяги, чем отслеживая эти несколько файлов сценариев. Взгляните на инструмент KInspector https://github.com/Kentico/KInspector, это даст вам всевозможные предложения. –

+1

Это просто позор. Kentico не дает разработчикам способ удалить этот неиспользуемый код. Даже если разница в производительности DOM может быть незначительной (спорная), это все еще ненужные навороты и HTTP-запросы, и при проверке DOM это не является незначительным количеством трещин. – philtune