Ширина колонок при создании Excel документа с помощью NPOI

Раньше мы работали с какой-то древней библиотекой по работе с Excel-документами — MultiTable. Этот проект изначально написан на Java и был портирован в .Net, и получилось так, что большинство функций скрыто и плохо документировано. Использование предопределенных стилей в этой библиотеке просто ужасное — есть у нас гигантский постоянно дополняемый список стилей, а вот создать свой стиль в процессе генерации документа не представляется возможным. Плюс ко всему библиотека совсем не умеет работать с xlsx. В общем, решили поискать библиотечку для чтения файлов и их генерации посвежее. Читать дальше

Минификация CSS и Javascript в Website проекте ASP.NET

Про минимизацию javascript и css знают все. Ну если кто не знает, то, вкратце, это уменьшение объема файлов за счет удаления комментариев, разметки, переносов строк и прочего. Особенно акуально оно для интернет сайтов, которые при первом же визите пользователя должны порадовать его своей производительностью. Но наш проект, во-первых, работает в локальной сети, а во-вторых, используется на одних и тех же компьютерах изо дня в день, поэтому мы долгое время совсем не задумывались об оптимизации скриптов и стилей. Пока не стали плотно работать с ExtJS.

Созданная страничка («Расчетный документ» = сокращенно РД) со всеми подключенными скриптами и стилями весит больше 5 Мб (около 200 файлов). Одно только сгенерированное DOM-дерево в коде HTML содержит более 500 000 байт. Работать с системой пользователь может начать не раньше, чем через 5 секунд после загрузки страницы (инициализация скриптов, ExtJS  и т.п.).

Как оказалось, несмотря на наличие локальной сети у заказчика и частую работу с одними и теми же страницами (должно же быть встроенное кэширование в браузере), иногда с загрузкой страниц возникают проблемы. Поэтому было решено уменьшить количество запросов к серверу и поработать над общей производительностью ExtJS в IE8. Читать дальше

Ускорение работы grid за счет удаления подсветки строки по событию mouseover

В ходе оптимизации нашей странички РД возникла мысль о том, что у пользователя в IE8 наш здоровенный грид лагает из-за-то того, что при наведении на любую строку grid добавляет этой строке дополнительный класс и удаляет его с тех строк, над которыми уже нет курсора. Сама по себе операция то должна быть недолгая, но манипуляции с DOM-деревом (а наше дерево в рабочем состоянии включает больше 500 Кб)  лучше лишний раз не выполнять. В интернете у меня не получилось быстро найти решение проблемы, несмотря на то, что я натыкался на очень много вопросов по этой теме. Читать дальше

Обновление одной записи при редактировании ячеек Grid ExtJS 4.1

В целях оптимизации мне хотелось, чтобы при редактировании какой-нибудь ячейки грида (используя плагин CellEditing) данные с сервера получались не полностью, а только для одной редактируемой записи. Это снизило бы как количество передаваемых данных, так и время обработки запроса на сервере — получить данные для одной строки по идентификатору бывает на порядок быстрее, чем для всей страницы из 25 или 50 записей.

Справка на сенче показала мне, что эта проблема не реализована полностью в ExtJS, а гугл — что она мучает не только меня. Перепробовав все предложенные варианты, я понял, что в 4.1.3 не один из них не работает. Пришлось лезть в исходники и чуточку доделать. Читать дальше

Попытка перехода на ExtJS 4.2.1 с 4.1.3

Заказчик последнее время жалуется на великие тормоза нашей системы, а так как работают они сейчас только с одной страницей («Расчетный Документ» далее  просто РД), то и оптимизировать следовало ее в первую очередь.

Прежде всего мы задумались о переходе на новую версию ExtJS в надежде улучшения производительности, ведь это (казалось бы 😉 ) наиболее быстрое решение, если предположить, что разработчики постоянно совершенствуют свой продукт. Когда-то я уже задумывался об этом, когда делал страницу заводов, на которой отображалось сразу несколько тысяч записей, сгруппированных по одному из полей. И вот оно первое нововведение этой версии — возможность использования BufferedRenderer. Читать дальше