Как делают меня gzip мои веб-файлы

Есть два хороших способа сделать это, в зависимости от вашего варианта использования.

Либо создайте новое, серое изображение, и скопируйте в него данные. Это будет держать изображение «управляемым», что может привести к лучшей производительности рендеринга (т.е. на экране). Но для этого потребуется вдвое больше памяти и скопировать данные из вашего ввода в изображение.

Другой способ - создать серое изображение непосредственно «вокруг» существующих данных пикселей. Это будет быстрее и практически не использует лишнюю кучу, поскольку позволяет избежать копирования данных пикселей. Но изображение не будет управляемым (так как резервный массив открыт и изменчив).

Обе опции показаны ниже:

int w = 640;
int h = 480;

byte[] imageBytes = new byte[w * h];

// 1 Keeps the image "managed" at the expense of twice the memory + a large array copy
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY);
image.getRaster().setDataElements(0, 0, w, h, imageBytes);

System.out.println("image: " + image);

// 2 Faster, and uses less memory, but will make the image "unmanaged"
ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
WritableRaster raster = Raster.createInterleavedRaster(new DataBufferByte(imageBytes, imageBytes.length), w, h, w, 1, new int[]{0}, null);
BufferedImage image2 = new BufferedImage(cm, raster, cm.isAlphaPremultiplied(), null);

System.out.println("image2: " + image2);

Если данные изображения не находятся в линейном пространстве серого цвета, можно использовать IndexColorModel для отображения входных данных в любой диапазон, который вы хотите: [117 ]

// Alternate, using IndexColorModel, if your input isn't in linear gray color space
int[] cmap = new int[256]; // TODO: Add ARGB packed colors here...
IndexColorModel icm = new IndexColorModel(8, 256, cmap, 0, false, -1, DataBuffer.TYPE_BYTE);

// As 1
BufferedImage image3 = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_INDEXED, icm);
image3.getRaster().setDataElements(0, 0, w, h, imageBytes);
System.out.println("image3: " + image3);

// As 2
BufferedImage image4 = new BufferedImage(icm, raster, cm.isAlphaPremultiplied(), null);

System.out.println("image4: " + image4);
10
задан Michael Haren 15 January 2009 в 14:07
поделиться

6 ответов

http://www.webcodingtech.com/php/gzip-compression.php

Или если у Вас есть Apache, попробуйте http://www.askapache.com/htaccess/apache-speed-compression.html

Некоторые услуги хостинга имеют опцию в панели управления. Не всегда возможно, тем не менее, поэтому, если Вы испытываете затруднения, сообщение назад с большим количеством деталей о Вашей платформе.

8
ответ дан 3 December 2019 в 23:15
поделиться

Отредактируйте свой httpd.conf файл.

Добавьте эту строку для загрузки модуля:

LoadModule deflate_module modules/mod_deflate.so

Добавьте эти строки для фактического сжатия вывода:

AddOutputFilterByType DEFLATE text/css text/html application/x-javascript application/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
2
ответ дан 3 December 2019 в 23:15
поделиться

http://developer.yahoo.com/performance/rules.html#gzip

Это - ссылка, если кто-либо спрашивает меня о моей ссылке, загружающейся gzipped файлы

0
ответ дан 3 December 2019 в 23:15
поделиться

При использовании Lighttpd существует mod_compress.

0
ответ дан 3 December 2019 в 23:15
поделиться

При выполнении Tomcat Java затем, Вы устанавливаете несколько свойств на своем Коннекторе (в conf/server.xml).

Конкретно Вы устанавливаете:

  1. compressableMimeType (что типы сжаться)
  2. сжатие (прочь | на |)
  3. noCompressionUserAgents (если Вы не хотите, чтобы определенные агенты получили gzip, перечислите их здесь),

Вот документация кота, которая обсуждает это: http://tomcat.apache.org/tomcat-5.5-doc/config/http.html

2
ответ дан 3 December 2019 в 23:15
поделиться

Jetty будет искать gzip-версии статических файлов, а также у него есть GzipFilter для динамического содержимого.

Вы, вероятно, могли бы перетащить GzipFilter в Tomcat, если хотите большего контроля сверх сжатия, чем просто сжатие на уровне коннектора Tomcat ...

http://docs.codehaus.org/display/JETTY/GZIP+Compression

1
ответ дан 3 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: