2009-06-24 4 views
18

Я сжимаю свой собственный JS с помощью YuiCompressor, но есть ли причина, по которой MicrosoftAjax.js не минимизируется? Или есть некоторые настройки, чтобы сказать, запускать сжатую версию (если есть сжатая версия). Или мне нужно декомпилировать его и самостоятельно изменить ресурс скрипта?Есть ли какая-то причина, по которой MicrosoftAjax.js не минимизируется?

+0

+1 Хороший вопрос! –

+0

Ну, из ответов, которые я получил, в любом случае не получается получить мини-/ сжатую версию MicrosoftAjax.js из коробки. Таким образом, похоже, что DIY - это способ пойти, как я упоминал в ответе, который я выбрал. Как я уже говорил Джошу, в ASP.NET 3.5 теперь можно комбинировать скрипты, http://msdn.microsoft.com/en-us/library/cc488552.aspx. Мы еще не перешли на 3.5, но когда мы это сделаем, я проверю это. Я читал смешанные отзывы об этом. Кроме того, я добавил jQuery в проект некоторое время назад, поэтому я медленно jQuerifying все, что может быть jQuerified. – nickytonline

+2

Мой комментарий выше не соответствует действительности. Ответ Дэйва Уорда - хороший, поэтому ни один DIY. – nickytonline

ответ

23

Я удивлен этим вводящим в заблуждение ответы.

ASP.NET AJAX всегда предоставлял как отладочные, так и сжатые версии MicrosoftAjax.js. Комбинация настройки debug web.config и ScriptManager's ScriptMode property управляет сценарием.

Кроме того, вы можете использовать the "retail" setting для принудительного сжатия сжатых скриптов.

+1

Спасибо за это Дейв. Замечательно знать. – nickytonline

+0

Блестящий, я понятия не имел о настройке «розничной торговли», наша компания имеет привычку развертывать материал в производстве еще в режиме отладки и т. Д. – Matt

-2

Я могу только предположить, что он остался как есть для простоты понимания, и, как вы уже намекнули, я вижу, почему вы не можете сжать его самостоятельно, это всего лишь JavaScript в конце концов - хотя MS вам хотелось бы, чтобы вы поверили иначе, они не посыпают его магической пылью, чтобы сделать ее другой! :)

[И давайте посмотрим правде в глаза; MS никогда не боялись размера своего кода, не так ли?]

0

EDIT: В свою защиту, на момент написания этого ответа у меня не было опыта работы с .NET 3.5; Теперь я понимаю, что они сделали несколько столь необходимых улучшений в этой области.


Очевидно, MS не считает, что размер файла JavaScript очень важен (что ненормально). Кроме того, основываясь на моем опыте работы с MS Ajax, они также вводят несколько меток SCRIPT (иногда более 10) в разметку. Эти теги содержат сценарии из обработчика WebResource.axd. Таким образом, требуется десять или более запросов, чтобы получить необходимый Javascript для запуска страницы! Чтобы добавить к смехотворности, они ссылаются на сумасшедшую строку запроса на URL-адрес обработчика, что, вероятно, предотвращает кеширование браузера браузером.

Это маразм было достаточно оснований для меня, чтобы полностью канаву MS Ajax и переключиться на jQuery, что гораздо лучше, библиотека, особенно так Visual Studio now has Intellisense for jQuery.

+0

Кто проголосовал за этот ответ и почему? –

+0

Не уверен, голос от меня, потому что я поделился своим взглядом на ASP.NET Ajax. –

+0

Я тоже был замедлен - возможно, у нас есть сотрудник MS? :) Я действительно хочу, чтобы избиратели объяснили, почему они проголосовали так ... – CJM

1

Что бы вы предпочли:

  1. MicrosoftAjax.js приходит сжатый, затемненный уже.
  2. MicrosoftAjax.js поставляется несжатым и открытым, поэтому вы можете сами его прочитать и понять.
+3

почему бы и нет? jQuery входит в оба, верно? –

+0

Хотя было бы тривиально иметь обе версии и быть достаточно полезными, если бы вы выбрали простой путь, вы должны предоставить несжатую версию. +1, потому что это не заслуживало нисходящего голосования. – CJM

+0

@Neil N. Я согласен, почему бы и нет? При разработке использовать несжатые и в prod использовать уменьшенную/обфускацию версию. – nickytonline

3

См http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx, вам нужен вариант

enableScriptMinification="true" 

и добавить MicrosoftAjax.js к списку

+0

Я читал эту статью раньше, но спасибо, что разместил ее здесь. То, что я искал, было из готового решения от Microsoft Ajax. Похоже, DIY - это способ пойти дальше. – nickytonline

7

Все сценарии в System.Web.Extensions приведены к минимуму - есть две версии каждого из них, как указывает отличный ответ Дейва Уорда. ScriptManager по умолчанию будет использовать отладочную версию, когда web.config находится в режиме отладки. Отбросьте его, чтобы выпустить с настройкой для розничной торговли или debug = "false", и посмотрите на скрипт.

Кроме того, скрипты, выполняемые через WebResourceHandler или ScriptResourceHandler, фактически кэшируются.Они кэшируются наилучшим образом - навсегда, поэтому им даже не нужно приступать к будущим посещениям. Запрос выполняется так, как он есть, поскольку он содержит зашифрованные данные. Он зашифрован, поскольку содержит информацию о ресурсе скрипта, включая имя сборки, а также потому, что он предотвращает атаки на затопление кеша.

Не ищите представителя здесь, просто хотел дать более подробную информацию.

+1

Полезно знать о кэшировании WebResourceHandler или ScriptResourceHandler. Поэтому я предполагаю, что когда вы вносите изменения и передислоцируете, они снова кэшируются, но как разные файлы, потому что зашифрованная цепочка изменений изменилась? – nickytonline

+2

Yup. Любое изменение ресурса изменит последовательность запросов, в результате чего будет создан новый элемент кэширования. Также я не упомянул, что скрипты также сжаты gzip. – InfinitiesLoop

Смежные вопросы