Как сжать json файл
Что прекрасно работает, за исключением того, что файлы json очень большие, и я хотел бы их сжать. Как я могу сделать это автоматически? Что же мне делать?
1 ответ
Как усечь и сжать большие файлы журналов в SQL Server 2005? Как применять усечение через регулярные промежутки времени? Есть ли разница между усечением и сокращением? Заранее спасибо
У меня есть большая строка данных JSON размером 757 КБ. Я попробовал GZIP ' ING it, который успешно уменьшил размер файла до 143 КБ. Но в состоянии GZIP'ed моя функция JQUERY не может использовать сжатые данные JSON. Есть какие-нибудь предложения о том, как сжать JSON в среде IIS/ASP и при этом.
Python имеет стандартный модуль для zlib , который может сжимать и распаковывать данные для вас. Вы можете использовать это сразу же на ваших данных и записывать (и читать) пользовательский формат, или использовать модуль gzip , который обертывает внутреннюю работу zlib для чтения и записи gzip совместимых файлов, в то время как
автоматическое сжатие или распаковка данных таким образом, чтобы они выглядели как обычный файловый объект.
Таким образом, он аккуратно заменяет формат open по умолчанию для взаимодействия с файлами, и все, что вам нужно, это:
(с изменением строки open , потому что я настоятельно рекомендую использовать синтаксис with для обработки файловых объектов.)
Похожие вопросы:
Я хотел бы знать, можно ли сжимать файлы на моем Google Диске. Возможно ли сильно сжать файлы, как это делает 7zip? Редактировать я имел в виду, не загружая файлы на компьютер и просто сжимая их.
Есть ли какой-нибудь способ сжать большие файлы в меньшие .zip из .tar.gz файлов на google Диске? Я попробовал google appscript , но он создал .zip файлов, но не сжал. Как это сделать?
Как усечь и сжать большие файлы журналов в SQL Server 2005? Как применять усечение через регулярные промежутки времени? Есть ли разница между усечением и сокращением? Заранее спасибо
У меня есть большая строка данных JSON размером 757 КБ. Я попробовал GZIP ' ING it, который успешно уменьшил размер файла до 143 КБ. Но в состоянии GZIP'ed моя функция JQUERY не может использовать.
Мне нужно предварительно сжать некоторые очень большие файлы html/xml/json (большие дампы данных), используя либо gzip, либо deflate. Я никогда не хочу подавать файлы несжатыми. Они настолько велики.
Мне нужно разработать супер быстрый поиск на основе jquery, я использую файл json для получения данных, размер моего файла составляет около 20 Мб. Я получаю доступ к файлу только один раз и кэширую.
В моем проекте мы не используем сжатие iis, потому что используем обычай CompressFilterAttribute. Для представлений работает правильно. Мне нужно сжать файлы css и js. У кого-нибудь есть.
У меня есть веб-сервис, отправляющий огромный текст JSON в приложение Android. Там около 20000 ID номеров. К сожалению, но, возможно, неудивительно, что это тайм-аут. Какие у меня есть варианты.
Я использую Azure data lake store в качестве службы хранения для моего приложения Java, иногда мне нужно сжать несколько файлов, сейчас я копирую все файлы на сервер, сжимаю их локально, а затем.
В этом уроке мы рассмотрим различные способы уменьшения размера JSON в наших Java-приложениях.
1. введение
Java-приложения часто используют JSON в качестве общего формата для отправки и получения данных. Кроме того, он используется в качестве протокола сериализации для хранения данных. С меньшими размерами данных JSON наши приложения становятся дешевле и быстрее.
В этом уроке мы рассмотрим различные способы уменьшения размера JSON в наших Java-приложениях.
2. Модель предметной области и тестовые данные
Давайте создадим модель домена для Клиента с некоторыми контактными данными:
Обратите внимание, что все поля будут обязательными, за исключением номера телефона и электронной почты .
Чтобы правильно проверить различия в размерах данных JSON, нам нужно, по крайней мере, несколько сотен экземпляров Customer . У них должны быть разные данные, чтобы сделать наши тесты более реалистичными. Веб-сайт генерации данных mockaroo помогает нам здесь. Мы можем создать там 1000 записей данных JSON бесплатно, в нашем собственном формате и с аутентичными тестовыми данными.
Давайте настроим mockaroo для нашей модели домена:
Вот некоторые пункты, которые следует иметь в виду:
- Здесь мы указали имена полей
- Здесь мы выбрали типы данных наших полей
- 50% телефонных номеров пусты в фиктивных данных
- 30% адресов электронной почты тоже пусты
Во всех приведенных ниже примерах кода используются одни и те же данные 1000 клиентов из mockaroo . Мы используем фабричный метод Customer.fromMockFile () , чтобы прочитать этот файл и превратить его в объекты Customer .
Мы будем использовать Джексона в качестве нашей библиотеки обработки JSON.
3. Размер данных JSON с параметрами Джексона по умолчанию
Давайте напишем объект Java в JSON с параметрами Джексона по умолчанию:
Давайте посмотрим макет данных для первого Клиента :
При использовании параметров Джексона по умолчанию размер массива байтов данных JSON со всеми 1000 клиентами составляет 181,0 КБ .
4. Сжатие с помощью gzip
Давайте возьмем JSON, созданный с параметрами Джексона по умолчанию, и сожмем его с помощью gzip . Это приводит к 45,9 КБ, что составляет всего 25,3% от исходного размера . Поэтому, если мы сможем включить сжатие gzip через конфигурацию, мы сократим размер данных JSON на 75% без каких-либо изменений в нашем Java-коде!
Если наше приложение Spring Boot доставляет данные JSON в другие службы или интерфейсы, мы включим сжатие gzip в конфигурации Spring Boot. Давайте рассмотрим типичную конфигурацию сжатия в синтаксисе YAML:
Во-первых, мы включили сжатие в целом, установив enabled как true. Затем мы специально включили сжатие данных JSON, добавив application/json в список mime-типов . Наконец, обратите внимание, что мы установили min-response-size длиной 1024 байта. Это связано с тем, что если мы сжимаем короткие объемы данных, мы можем получить больше данных, чем исходные.
Предыдущий учебник по gzip говорит нам, что gzip имеет различные уровни сжатия. В наших примерах кода используется gzip с уровнем сжатия Java по умолчанию. Spring Boot, прокси-серверы или веб-серверы могут получать разные результаты сжатия для одних и тех же данных JSON.
Если мы используем JSON в качестве протокола сериализации для хранения данных, нам нужно будет сжимать и распаковывать данные самостоятельно.
5. Более короткие имена полей в JSON
Рекомендуется использовать имена полей, которые не являются ни слишком короткими, ни слишком длинными. Давайте опустим это ради демонстрации: мы будем использовать односимвольные имена полей в JSON, но мы не будем изменять имена полей Java. Это уменьшает размер данных JSON, но снижает читаемость JSON. Поскольку это также потребует обновления всех служб и интерфейсов, мы, вероятно, будем использовать эти короткие имена полей только при хранении данных:
Легко изменить имена полей JSON с помощью Jackson, оставив имена полей Java нетронутыми. Мы будем использовать аннотацию @JsonProperty :
Использование односимвольных имен полей приводит к тому, что размер данных составляет 72,5% от исходного размера. Более того, использование gzip приведет к сжатию до 23,8%. Это не намного меньше, чем 25,3%, которые мы получили от простого сжатия исходных данных с помощью gzip . Нам всегда нужно искать подходящее соотношение затрат и выгод. Потеря удобочитаемости при небольшом увеличении размера не рекомендуется для большинства сценариев.
6. Сериализация в массив
Давайте посмотрим, как мы можем еще больше уменьшить размер данных JSON, полностью исключив имена полей. Мы можем достичь этого, сохранив массив customers в нашем JSON. Обратите внимание, что мы также уменьшим читабельность. И нам также нужно будет обновить все службы и интерфейсы, которые используют наши данные JSON:
Хранение Customer в виде массива приводит к выходу, который составляет 53,1% от исходного размера и 22,0% с gzip сжатием. Это наш лучший результат на данный момент. Тем не менее, 22% не намного меньше, чем 25,3%, которые мы получили, просто сжав исходные данные с помощью gzip .
Чтобы сериализовать клиента в виде массива, нам нужно полностью контролировать сериализацию JSON. Обратитесь еще раз к нашему учебнику по Джексону для получения дополнительных примеров.
7. Исключение нулевых Значений
Джексон и другие библиотеки обработки JSON могут неправильно обрабатывать значения JSON null при чтении или записи JSON. Например, Джексон записывает значение JSON null по умолчанию, когда он встречает значение Java null . Вот почему рекомендуется удалять пустые поля в данных JSON . Это оставляет инициализацию пустых значений для каждой библиотеки обработки JSON и уменьшает размер данных JSON.
В наших фиктивных данных мы установили 50% телефонных номеров и 30% адресов электронной почты как пустые. Исключение этих значений null уменьшает размер данных JSON до 166,8 Кб, или 92,1% от исходного размера данных. Затем сжатие gzip снизит его до 24,9%.
Теперь, если мы объединим игнорирование значений null с более короткими именами полей из предыдущего раздела, мы получим более значительную экономию: 68,3% от исходного размера и 23,4% с gzip .
Мы можем настроить пропуск полей null value в Джексоне для каждого класса или глобально для всех классов .
8. Новый Класс Домена
До сих пор мы достигли наименьшего размера данных JSON, сериализовав их в массив. Один из способов уменьшить это еще больше-это новая модель домена с меньшим количеством полей. Но зачем нам это делать?
Давайте представим себе интерфейс для наших данных JSON, который показывает всех клиентов в виде таблицы с двумя столбцами: имя и адрес. Давайте напишем данные JSON специально для этого интерфейса:
Обратите внимание, как мы объединили поля имени в имя и поля адреса в адрес . Кроме того, мы не указали адрес электронной почты и номер телефона .
Это должно привести к гораздо меньшему объему данных JSON. Это также избавляет интерфейс от объединения полей Customer . Но с другой стороны, это плотно связывает наш задний конец с передним .
Давайте создадим новый доменный класс Customer Slim для этого интерфейса:
Если мы преобразуем наши тестовые данные в этот новый класс Customer Slim domain, мы уменьшим его до 46,1% от исходного размера. Это будет с использованием настроек Джексона по умолчанию. Если мы используем gzip , он снизится до 15,1%. Этот последний результат уже является значительным приростом по сравнению с предыдущим лучшим результатом в 22,0%.
Далее, если мы также используем односимвольные имена полей, это уменьшит наш размер до 40,7% от исходного размера, а gzip дополнительно уменьшит его до 14,7%. Этот результат-лишь небольшой прирост более чем на 15,1%, которого мы достигли с настройками Джексона по умолчанию.
Никакие поля в Customer Slim не являются необязательными, поэтому исключение пустых значений не влияет на размер данных JSON.
Наша последняя оптимизация-это сериализация массива. Сериализуя Customer Slim в массив, мы достигаем наилучшего результата: 34,2% от исходного размера и 14,2% с помощью gzip . Таким образом, даже без сжатия мы удаляем почти две трети исходных данных. А сжатие сокращает наши данные JSON всего до одной седьмой от исходного размера!
9. Заключение
В этой статье мы впервые увидели, почему нам нужно уменьшить размеры данных JSON. Затем мы изучили различные способы уменьшения размера данных JSON. Наконец, мы узнали, как еще больше уменьшить размер данных JSON с помощью модели домена, настроенной на один интерфейс.
Далее пошла проверка на установленные модули веб сервера Administrative Tools -> Server Manager -> Roles -> IIS
Static/Dynamic Content Comprassion установлены. (Хочу обратить внимание, для Windows 7 установка осуществляется через добавление/удаление компонентов).
Далее проверяем, включена ли компрессия для приложения на IIS.
Если нет, то ставим галочки и применяем изменения. Разрешить компрессию также возможно через web.config
либо Configuration Editor -> system.webServer -> urlCompression
Кажется, уже все в порядке, но IIS как не отдавал Content-Encoding в заголовке ответа, так и не отдает.
Предположим, что найденный вариант вам не подходит, а сжимать ответ вам все-таки надо. Что мы имеем по умолчанию в настройках динамической компрессии.
Компрессия будет распространяться, к примеру, на text/javascript . Конечно, это больше похоже на хак, но это лучше, чем ничего.
Меняем наш метод действия на
и при ответе используя функцию $.ajax , тут же получаем ошибку парсинга данных. Иными словами, теперь мы должны использовать либо $.getJSON , либо явно указывать, что мы ожидаем json .
И третье решение, которое появилось, но под те задачи не подходило (это не значит, что оно не достойно внимания) – паковать самим.
Привожу пример со стэка, с которым я полностью согласен
Степень сжатия данных
Пока игрались с выше сказанным, была замечена еще одна интересная вещь, сжатый контент в Fiddler распаковывался и самим же фидлером опять перепаковывался, сжатия у фидлера на глаз было на
10-20% меньше байт. Как найти настройки степени сжатия для IIS, ума не приложу. Не считая третьего варианта, в котором можно использовать параметр конструкторов CompressionLevel . Может, кто из вас подскажет? Этот момент для себя считаю важным, так как в зависимости от проекта иногда важен объем передаваемого трафика, а иногда, наоборот, процессорное время.
Буду рад услышать еще варианты решения проблемы, какими бы безумными идеи на первый взгляд не казались.
FREEJAVASCRIPT MINIFIER
Этот свободный JavaScript Minifier или JS компрессор малого SEO инструменты могут помочь компрессы, затемнять или преуменьшать JS онлайн.
Этот JavaScript Minifier является инструментом JavaScript преуменьшать, который может помочь вам Минимизировать и компресс JS онлайн. Инструмент работает невероятно за счет уменьшения размера файла, удалив все ненужные пробелы, строки и отступы, а также неиспользованные символы. Она также может помочь сделать ваш JavaScript более сложным, так что будет трудно читать и копировать.
Преимущества использования этого JavaScript Minifier:
Есть много причин, почему использующих этот JavaScript Minifier полезно для вас; такие как:
Как Сжать JS онлайн с помощью нашего JavaScript Minifier?
Этот JavaScript Minifier очень удобно. Чтобы использовать JavaScript компрессор, все, что вам нужно сделать, это скопировать и вставить исходный код JavaScript в текстовом поле, а затем нажмите на кнопку «Submit». Наш применение JavaScript Minifier или JS компрессор будет сжимать ваш код JavaScript и генерировать код уменьшенного мгновенно.
Этот JavaScript Minifier инструмент может помочь увеличить скорость вашего сайта, удаляя ненужные символы и пробелы или Минимизация код JavaScript. Имея меньший JS размер файла также будет означать, что ваши посетители сайта могут быстро загружать веб-страницы, потому что им нужно только для загрузки Меньший данных о количестве при загрузке веб-страниц.
О JavaScript Minifier Tool Малой SEO инструментов
Наш надежный инструмент позволяет сжимать ваши коды JavaScript легко, так что вы можете уменьшить размер ваших файлов JavaScript. Это может привести к более быстрому скорость загрузки страницы, которые также могут помочь улучшить опыт ваших посетителей веб-сайта.
Это онлайн JavaScript Minifier работает лучше всего, чтобы Минимизировать JS размер файла, чтобы сократить время для загрузки и сохранения пропускной способности, а также. Мы позволяем нашим пользователям иметь мульти сжатия файлов JS и покажут различия между сжатыми и оригинальными JS-файлами.
Почему вы должны использовать нашу JavaScript Minifier?
Мы в Малый SEO инструменты цель, чтобы предоставить вам лучший инструмент компрессор JavaScript, который можно использовать для Минимизировать JS онлайн. Он имеет дружественный пользовательский интерфейс, который позволяет сжимать и преуменьшать JS онлайн легко и быстро.
Этот свободный JavaScript Minifier или JavaScript компрессор может обрабатывать и сжимать JS в Интернете и автоматически идентифицировать и удалить все ненужные символы, которые вы на самом деле не нужно, чтобы в ваших веб-страницах. Этот компрессор JS может также Минимизировать скрипты JS на более мелкие скрипты JS.
Наш бесплатный онлайн JavaScript Minifier просто исключительный. Просто скопируйте и вставьте код JavaScript в текстовом поле или загрузить различные JS файлы Минимизировать их вместе. Этот компрессор JavaScript предоставляет пользователю с API. Наш быстрый и легкий JavaScript Minifier будет сжимать или файлы преуменьшать JS бесплатно, чтобы сделать ваш сайт более эффективным и загружаются быстрее. Сжатие JavaScript делает JS код подходит для вашего сайта, так как вы можете удалить ненужные отступы, интервалы, комментарии и строку. Сжимая код JavaScript, вы можете также сделать его более трудно читать, когда кто-то будет смотреть на источник.
Мы предлагаем Вам лучший бесплатный JavaScript Minifier или JavaScript Minify, которые вы можете использовать в Интернете. Он поставляется с простой в использовании интерфейс, который позволяет сжимать и преуменьшать JS файлы быстро. Основная цель Минимизировать JS в Интернете является улучшить скорость загрузки страниц веб-сайта. Через минификации он может сделать скрипт меньшего размера, что приводит к быстрому времени загрузки. Есть также некоторые веб-разработчики, которые используют этот JS Minifier, чтобы скрыть свой код JS в дополнение к Минимизировать JS. Это делает его трудно читать и копировать.
Читайте также: