Я сжимаю свой собственный JS с помощью YuiCompressor, но есть ли причина, по которой MicrosoftAjax.js не минимизируется? Или есть некоторые настройки, чтобы сказать, запускать сжатую версию (если есть сжатая версия). Или мне нужно декомпилировать его и самостоятельно изменить ресурс скрипта?Есть ли какая-то причина, по которой MicrosoftAjax.js не минимизируется?
ответ
Я удивлен этим вводящим в заблуждение ответы.
ASP.NET AJAX всегда предоставлял как отладочные, так и сжатые версии MicrosoftAjax.js. Комбинация настройки debug web.config и ScriptManager's ScriptMode property управляет сценарием.
Кроме того, вы можете использовать the "retail" setting для принудительного сжатия сжатых скриптов.
Спасибо за это Дейв. Замечательно знать. – nickytonline
Блестящий, я понятия не имел о настройке «розничной торговли», наша компания имеет привычку развертывать материал в производстве еще в режиме отладки и т. Д. – Matt
Я могу только предположить, что он остался как есть для простоты понимания, и, как вы уже намекнули, я вижу, почему вы не можете сжать его самостоятельно, это всего лишь JavaScript в конце концов - хотя MS вам хотелось бы, чтобы вы поверили иначе, они не посыпают его магической пылью, чтобы сделать ее другой! :)
[И давайте посмотрим правде в глаза; MS никогда не боялись размера своего кода, не так ли?]
EDIT: В свою защиту, на момент написания этого ответа у меня не было опыта работы с .NET 3.5; Теперь я понимаю, что они сделали несколько столь необходимых улучшений в этой области.
Очевидно, MS не считает, что размер файла JavaScript очень важен (что ненормально). Кроме того, основываясь на моем опыте работы с MS Ajax, они также вводят несколько меток SCRIPT (иногда более 10) в разметку. Эти теги содержат сценарии из обработчика WebResource.axd. Таким образом, требуется десять или более запросов, чтобы получить необходимый Javascript для запуска страницы! Чтобы добавить к смехотворности, они ссылаются на сумасшедшую строку запроса на URL-адрес обработчика, что, вероятно, предотвращает кеширование браузера браузером.
Это маразм было достаточно оснований для меня, чтобы полностью канаву MS Ajax и переключиться на jQuery, что гораздо лучше, библиотека, особенно так Visual Studio now has Intellisense for jQuery.
Кто проголосовал за этот ответ и почему? –
Не уверен, голос от меня, потому что я поделился своим взглядом на ASP.NET Ajax. –
Я тоже был замедлен - возможно, у нас есть сотрудник MS? :) Я действительно хочу, чтобы избиратели объяснили, почему они проголосовали так ... – CJM
Что бы вы предпочли:
- MicrosoftAjax.js приходит сжатый, затемненный уже.
- MicrosoftAjax.js поставляется несжатым и открытым, поэтому вы можете сами его прочитать и понять.
почему бы и нет? jQuery входит в оба, верно? –
Хотя было бы тривиально иметь обе версии и быть достаточно полезными, если бы вы выбрали простой путь, вы должны предоставить несжатую версию. +1, потому что это не заслуживало нисходящего голосования. – CJM
@Neil N. Я согласен, почему бы и нет? При разработке использовать несжатые и в prod использовать уменьшенную/обфускацию версию. – nickytonline
См http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx, вам нужен вариант
enableScriptMinification="true"
и добавить MicrosoftAjax.js к списку
Я читал эту статью раньше, но спасибо, что разместил ее здесь. То, что я искал, было из готового решения от Microsoft Ajax. Похоже, DIY - это способ пойти дальше. – nickytonline
Все сценарии в System.Web.Extensions приведены к минимуму - есть две версии каждого из них, как указывает отличный ответ Дейва Уорда. ScriptManager по умолчанию будет использовать отладочную версию, когда web.config находится в режиме отладки. Отбросьте его, чтобы выпустить с настройкой для розничной торговли или debug = "false", и посмотрите на скрипт.
Кроме того, скрипты, выполняемые через WebResourceHandler или ScriptResourceHandler, фактически кэшируются.Они кэшируются наилучшим образом - навсегда, поэтому им даже не нужно приступать к будущим посещениям. Запрос выполняется так, как он есть, поскольку он содержит зашифрованные данные. Он зашифрован, поскольку содержит информацию о ресурсе скрипта, включая имя сборки, а также потому, что он предотвращает атаки на затопление кеша.
Не ищите представителя здесь, просто хотел дать более подробную информацию.
Полезно знать о кэшировании WebResourceHandler или ScriptResourceHandler. Поэтому я предполагаю, что когда вы вносите изменения и передислоцируете, они снова кэшируются, но как разные файлы, потому что зашифрованная цепочка изменений изменилась? – nickytonline
Yup. Любое изменение ресурса изменит последовательность запросов, в результате чего будет создан новый элемент кэширования. Также я не упомянул, что скрипты также сжаты gzip. – InfinitiesLoop
- 1. Есть ли причина, по которой glEnableVertexAttribArray существует?
- 2. Есть ли причина, по которой мы не используем подклассы UIImageView?
- 3. Есть ли причина, по которой мой html не рендеринг?
- 4. Есть ли причина, по которой я не буду использовать «let»?
- 5. Есть ли причина, по которой это не работает?
- 6. Есть ли причина, по которой это не избыточный код?
- 7. Есть ли причина, по которой sbt не поддерживает ключ разработчика?
- 8. Есть ли причина, по которой некоторые функции не принимают пустоту *?
- 9. Есть ли причина, по которой эта форма не будет подана?
- 10. Есть ли причина, по которой разработчики JavaScript не используют Array.push()?
- 11. Есть ли причина, по которой C99 не поддерживает перегрузку функции?
- 12. Есть ли причина, по которой добавление добавляет размер элемента?
- 13. Есть ли причина, по которой у Cassandra нет геопространственной поддержки?
- 14. Есть ли причина, по которой функция будет притворяться родной?
- 15. Есть ли причина, по которой мы даем весеннюю аннотацию имени?
- 16. Есть ли причина, по которой нужно встраивать вызовы функций?
- 17. Есть ли веская причина, по которой заголовок ListView занимает позицию?
- 18. Есть ли причина, по которой я должен назвать Integer.hashCode()?
- 19. Есть ли причина, по которой заканчиваются окончания строк?
- 20. Есть ли причина, по которой HRESULT следует назначить переменной?
- 21. Есть ли причина, по которой программисты используют символ с System.in.read()?
- 22. Есть ли причина, по которой команды медленнее, чем обычные запросы?
- 23. Причина, по которой мое приложение не выйдет?
- 24. Возможная причина, по которой уведомление не удаляется
- 25. есть причина, по которой std :: make_shared потребует конструктор по умолчанию?
- 26. Является ли причина, по которой я не могу добавить ManyToManyField?
- 27. Будет ли причина, по которой команда SELECT не работает?
- 28. Есть ли причина, по которой lambdas с пустым списком захвата не может быть сконфигурирован по умолчанию?
- 29. Есть ли причина, по которой десятичный литерал по умолчанию не является BigDecimal в Clojure?
- 30. Есть ли причина, по которой устройство по умолчанию не привязывается к полям?
+1 Хороший вопрос! –
Ну, из ответов, которые я получил, в любом случае не получается получить мини-/ сжатую версию MicrosoftAjax.js из коробки. Таким образом, похоже, что DIY - это способ пойти, как я упоминал в ответе, который я выбрал. Как я уже говорил Джошу, в ASP.NET 3.5 теперь можно комбинировать скрипты, http://msdn.microsoft.com/en-us/library/cc488552.aspx. Мы еще не перешли на 3.5, но когда мы это сделаем, я проверю это. Я читал смешанные отзывы об этом. Кроме того, я добавил jQuery в проект некоторое время назад, поэтому я медленно jQuerifying все, что может быть jQuerified. – nickytonline
Мой комментарий выше не соответствует действительности. Ответ Дэйва Уорда - хороший, поэтому ни один DIY. – nickytonline