Nota: tuve otra pregunta similar sobre cómo usar datos GZIP usando Ruby's zlib
que técnicamente fue respondida y no sentí que podía comenzar a desarrollar la pregunta ya que había sido respondida aunque esta pregunta está relacionada, no es lo mismo ...Uso de la compresión gzip en Sinatra con Ruby
El siguiente código (creo) es GZIP un archivo CSS estático y almacena los resultados en la variable result
. Pero, ¿qué hago con esto en el sentido de: cómo puedo enviar esta información al navegador para que se reconozca como GZIP en vez del tamaño original del archivo (por ejemplo, al verificar mi puntaje de YSlow, quiero verlo marcando correctamente para asegurarme de que tengo recursos estáticos GZIP).
z = Zlib::Deflate.new(6, 31)
z.deflate(File.read('public/Assets/Styles/build.css'))
z.flush
@result = z.finish # could also of done: result = z.deflate(file, Zlib::FINISH)
z.close
... Una cosa a destacar es que en mi anterior pregunta el entrevistado aclaró que Zlib::Deflate.deflate
no producirá datos codificado con Gzip. Solo producirá datos codificados en zlib y, por lo tanto, necesitaría usar Zlib::Deflate.new
con el argumento windowBits
igual a 31 para iniciar una transmisión gzip.
Pero cuando ejecuto este código, no sé realmente qué hacer con la variable result
y su contenido. No hay información en Internet (que pueda encontrar) sobre cómo enviar recursos estáticos codificados GZIP (como JavaScript, CSS, HTML, etc.) al navegador, lo que hace que la página cargue más rápido. ¡Parece que cada artículo de Ruby que leo está basado en alguien que usa Ruby on Rails!
Cualquier ayuda realmente apreciada.
Gracias por la respuesta detallada y el código de ejemplo. Tomé en cuenta tus comentarios y usé el 'Rack :: Deflater' en su lugar. Literalmente una línea de código en la parte superior de mi archivo de aplicación y funcionó: 'use Rack :: Deflater' – Integralist
+1 para la opción nginx –
Downvoted porque esto servirá contenido comprimido independientemente de lo que el cliente haya especificado que pueda aceptar en su El encabezado 'Accept-Encoding'. Esto es, por supuesto, una mala práctica y debe evitarse. – aidan