сжатие / декомпрессия текста JavaScript - PullRequest
4 голосов
/ 15 июня 2009

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

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

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

UPDATE

Для ясности, файл - это текст (данные), а не код.

Ответы [ 6 ]

8 голосов
/ 15 июня 2009

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

1 голос
/ 15 июня 2009

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

Несколько тестов с большим количеством текста показали довольно хороший результат.

1 голос
/ 15 июня 2009

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

0 голосов
/ 10 декабря 2015

Да, вам не нужно обрабатывать сжатие / распаковку самостоятельно, браузер делает это за вас, только вы должны указать параметры сервера для используемого вами сервера. Примечание: вы можете явно указать для чего все 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-адресу запроса, который отвечает на требуемые данные / текст. Затем перейдите на вкладку заголовка.

увидишь.

REquest / REsponse Headers

Content-Encoding:gzip

Accept-Encoding: gzip, deflate

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

0 голосов
/ 30 августа 2012

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

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

0 голосов
/ 08 февраля 2011

ДЕКОМПРЕСС JAVASCRIPT

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

Типичный 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=…;

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

...