Если вы установите Application.ShutdownMode на OnExplicitShutdown
, можете ли вы избежать включения ShutdownCallback в очередь диспетчера и продолжать делать все, что вы хотите, независимо от окон? Я не проверял это, но кажется потенциальным решением, а также использованием свойства Application.MainWindow , которое можно изменить на лету.
Я думаю, что хороший подход - использовать разные стратегии для разных сред:
I имеют некоторый опыт использования компрессора YUI как для Javascript, так и для CSS, и узнали (на собственном горьком опыте), что тестирование минифицированных JS и CSS действительно очень важно.
Создание статических миниатюрных файлов JS и CSS как части ваша сборка для производства имеет следующие преимущества:
Лучше всего не делать этого вообще , поскольку все современные браузеры и серверы обрабатывают Gzip-кодирование. Посмотрите на числа:
Это довольно большой файл JS с множеством ненужных пробелов, но в конечном уравнении вы сохранили колоссальные 2 КБ !! Не только это, но и благодаря кешированию, это экономия для каждого посетителя, а не для каждой страницы. Ух, теперь это того стоило всех хлопот, не так ли?
Вы бы сэкономили в 10 раз больше, обрезав ширину в пикселях в верхней части баннера, а 99% пользователей широкополосного доступа сохранили им около 1 миллисекунды времени загрузки. Разбей ленты и шампанское!
Сжатие JS еще хуже, раз уж ты вы просто поразили своих клиентов бременем распаковки на КАЖДОЙ СТРАНИЦЕ. И экономия после использования gzip ничтожна.
Серьезно. Дополнительная сложность и отладка не стоят того, если вы не ориентируетесь на рынок мобильной связи (и даже при условии, что пользователи все еще используют CDMA, а не 3G) или не имеют миллиарда обращений в день. В противном случае просто не беспокойтесь.
Я думаю, вам следует делать это во время выполнения, за исключением случаев, когда ваши файлы CSS и JS действительно огромны (более 1 МБ). Кеш браузера можно принудительно настроить, установив несколько заголовков http , и если вы хотите, чтобы ваше приложение принудительно перезагружало на стороне клиента, просто измените параметр HTTP:
<link rel="stylesheet" type="text/css" href="~/StyleSheetHandler.ashx?stylesheets=~stylesheets/master.css&token=1" />
Вы можете изменить токен, чтобы принудительно перезагрузка CSS на стороне клиента.
Я бы сказал, что лучше делать это при первом запросе и кешировании. Причина этого в том, что вы можете обновлять CSS по мере необходимости в читаемом формате, не возвращаясь к перестройке. вы можете основывать свой кеш на файле css, чтобы как только он был изменен, кеш обновлялся.
Джош
Вы делаете это во время выполнения, но только тогда, когда вам нужно. Это дает вам максимальную гибкость. Это особенно проблема с PHP, у которого в противном случае нет шага сборки (т.е. вы не хотите добавлять его, если у вас его нет в противном случае), но все же проблема для других платформ, которые делают это.
Риск само- продвижение, вы можете прочитать Повышение уровня Javascript в PHP и Повышение уровня CSS в PHP , в которых описываются проблемы, подходы и лучшие практики. Примеры на PHP, но сам код тривиален. Проблемы и принципы применимы к любой веб-платформе.