2010-11-10 140 views
11

acaba de crear una pequeña aplicación web para obtener una vista previa de documentos HTML que generan URLs que contienen el HTML (y todos los CSS en línea y Javascript) en datos codificados en base64. El problema es que las URL se ponen un poco largas. ¿Cuál es la forma estándar de "facto" (preferiblemente por Javascript) para comprimir la cadena primero sin pérdida de datos?Método de compresión sin pérdida para acortar la cadena antes de la codificación de base64 para acortarla?

PS; He leído acerca de Huffman y Lempel-Ziv en la escuela hace algún tiempo, y recuerdo disfrutando LZW :)

EDIT:

Solución encontrado; parece que rawStr => utf8Str => lzwStr => base64Str es el camino a seguir. Estoy trabajando más en la implementación de la compresión huffman entre utf8 y lzw. El problema hasta ahora es que demasiados caracteres se vuelven muy largos cuando se codifican en base64.

Respuesta

5

Consulte this answer. Menciona funciones para compresión/descompresión LZW (a través de http://jsolait.net/, específicamente http://jsolait.net/browser/trunk/jsolait/lib/codecs.js).

+0

¡Usted señor casi ha salvado mi día! Gran biblioteca, aunque el codificador base64 no estaba interesado en codificar la cadena codificada lzw. – bennedich

+0

Encontré un codificador/decodificador base64 extendido que funciona: http://www.webtoolkit.info/javascript-base64.html. En combinación con el decodificador lzw-en-// que vinculó a él, todo funciona. ¡Gracias por tu ayuda! – bennedich

+3

Página no encontrada - womp womp –

1

Luchará para obtener mucha compresión en una URL, son demasiado cortos y no contienen suficiente información redundante para obtener un gran beneficio de los algoritmos de estilo Huffman/LZW.

Si tiene limitaciones en el espacio de URL posibles (por ejemplo, todo el contenido tiende a estar en el mismo conjunto de carpetas) podría codificar algunas partes de las URL para la expansión en el cliente, es decir, hacer trampa.

+0

El código HTML para comprimir será de varios miles de caracteres y contiene muchos caracteres similares. Creo/espero que la compresión haga una diferencia significativa. – bennedich

+1

Ah Ok, ¡así que realmente son algo largos! Otra consideración: si asegura que la compresión GZIP está activada para los documentos HTML (es decir, a través de IIS), entonces obtendrá la compresión de todos modos para todo el documento HTML. En ese caso, ¿está comprimiendo la URL antes de codificar y ponerlos en el HTML redundante? Dejar que el navegador realice la descompresión en código en lugar de hacerlo en JS puede ser mucho más rápido. –

+0

Lo siento, todavía no te estoy siguiendo. Acabo de leer sobre GZIP y parece una mejor opción que solo LZW. ¿Hay alguna compatibilidad nativa para la decodificación/GZIP en los navegadores? ¿Sería seguro colocar una cadena GZIP: ed directamente en una URL? – bennedich

Cuestiones relacionadas