сжатие/распаковка текста javascript

Предположим, у меня есть текстовый файл размером 400 КБ, который я хочу прочитать из javascript. Проблема в том, что у моей целевой аудитории медленное соединение, поэтому загрузка 400 КБ может занять слишком много времени.

Я предполагаю, что мне нужно сжать файл, но хорошо, как я могу распаковать его через javascript на стороне клиента?

Стоит ли оно того, или время, необходимое для распаковки, сведет на нет время, сэкономленное при загрузке?

ОБНОВЛЕНИЕ

Чтобы было ясно, файл представляет собой текст (данные), а не код.


person hasen    schedule 15.06.2009    source источник
comment
Ну, это будет зависеть от того, что содержит текстовый файл! По сути, сжатие будет заключаться в удалении лишних пробелов и разрывов строк, что может существенно уменьшить размер файла, но как вы будете реконструировать его снова на стороне клиента?   -  person Kirtan    schedule 15.06.2009


Ответы (6)


Вы можете GZip текстовый файл и отправить его на браузер. Таким образом, вам не придется ничего делать на стороне клиента, браузер сам распаковает его.

person Kirtan    schedule 15.06.2009

не могли бы вы использовать HTTP-сжатие?

person Bluephlame    schedule 15.06.2009
comment
Вы можете быть немного более вежливым. - person NLV; 23.07.2010
comment
@hasenj, Bluephlame предлагает решение. И имхо лучший. - person Massimo; 27.11.2011

Это выглядит интересно: http://rumkin.com/tools/compression/compress_huff.php

Несколько тестов с МНОГО текста дали довольно хороший результат.

person Travis    schedule 15.06.2009
comment
Я только что попробовал, он увеличил размер, а не уменьшил его. - person hasen; 15.06.2009
comment
Да, при небольшом количестве текста размер увеличивается, но когда вы помещаете туда несколько страниц случайного текста, он довольно хорошо его сжимает. У меня компрессия 30-50%. - person Travis; 15.06.2009
comment
Если вам нужно сжатие своими руками (не реальное решение, данное @Bluephlame), см. чудесный javascript LZW по адресу 140byt. .es - person Massimo; 27.11.2011

[Старый вопрос, но на всякий случай, если другие люди наткнутся на это...]

Лучший способ справиться с этим — использовать сжатие HTTP. Все основные веб-серверы и веб-браузеры поддерживают это. На самом деле, если вы используете услугу веб-хостинга и ваш файл относится к типу файлов, который обычно требует сжатия (например, css, js, html), то он, вероятно, уже сжат для передачи, и вы просто не знаете об этом.

person broofa    schedule 30.08.2012

Да, вам не нужно самостоятельно обрабатывать сжатие/распаковку, браузер сделает это за вас, только вам нужно указать параметры сервера для используемого вами сервера. Примечание: вы можете явно указать, для чего все MimeType (формат ответа) Ex.

Ниже приведен параметр настройки сервера tomcat.

   <Connector port="8443" 
     protocol="org.apache.coyote.http11.Http11Protocol"
           SSLEnabled="true"
           maxThreads="200"
           compression="on"
           compressionMinSize="2048"
           compressableMimeType="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,charset=UTF-8,application/x-www-form-urlencoded,text/html,text/plain,text/css,text/javascript,text/json,application/x-javascript,application/javascript,application/json"
   />

Чтобы убедиться, что сжатие работает, вы можете проверить. нажмите F12 (инструмент разработчика) [у меня Chrome] -> вкладка «Сеть» -> начать запись. щелкните URL-адрес запроса, который отвечает на необходимые данные/текст. Затем перейдите на вкладку заголовка.

ты увидишь.

Заголовки запроса/ответа

Content-Encoding:gzip

Accept-Encoding: gzip, deflate

что он использует кодировку. и столбец размера на вкладке сети напротив URL-адреса будет показывать уменьшенный размер.

person Arun Pratap Singh    schedule 10.12.2015

РАСПРЕДЕЛИТЬ JAVASCRIPT

НЕВОЗМОЖНО скрыть сжатый код.

Типичный JavaScript, сжатый с помощью /packer/, начинается со следующего кода:

      `eval(function(p,a,c,k,e,r)`…
      `eval` can simply be replaced by `alert`.

Функция eval оценивает строковый аргумент, содержащий JavaScript. В большинстве упаковщиков используется eval, за которым следует document.write.

Чтобы распаковать JavaScript, замените эти методы одним из следующих:

1. Замените eval на alert (Вот так: alert(function(p,a,c,k,e,r)и откройте или обновите html-страницу, оповещение просто напечатает код во всплывающем окне< /эм>)

2. Если JavaScript появляется после элемента <body>, вы можете добавить <textarea> следующим образом:

      `<textarea id="code"></textarea>`

Затем замените eval(…); от document.getElementById("code").value=…;

Из обоих вариантов первый проще... Удачи :)

person Community    schedule 08.02.2011