
El servidor web Apache por desgracia no está configurado por defecto para suministrar correctamente los archivos con extensión .svgz (SVG comprimidos con gzip). En este artículo se muestra cómo hacer que se transmitan las cabeceras HTTP adecuadas para que ciertos navegadores lo interpreten adecuadamente. Se verá que es fácil subsanar esta deficiencia, también en distribuciones comunes para plataformas diferentes de Linux como xampp (para Windows) y mampp (para Mac).
Monday, 9 de March del 2009
Servidor Apache y SVG
Problemática
Mientras sólo existía la opción del empleo del ASV, no era importante que se transmitieran las cabeceras adecuadas: MSIE puede adjudicar el tipo adecuado de archivo por la inspección de la extensión —y, aunque práctico, parece ser una de las fuentes de vulnerabilidad que tiene—. En cambio, Firefox, por ejemplo, requiere que se le transmitan las cabeceras correspondientes, tanto para la extensión .svg como .svgz. Apache sí que tiene una configuración por defecto para los archivos SVG normales, pero no para los comprimidos (.svgz) —que ahorran muchísimo ancho de banda, sobre todo para archivos grandes, como los cartográficos—. Las cabeceras HTTP que se han de enviar para estos últimos son:
Content-Type: image/svg+xml
Content-Encoding: x-gzip
indicando la última que se transmite el contenido comprimido con gzip.
Para ello se han de modificar dos archivos de configuración: mime.types y mod_mime-defaults.conf (o nombres parecidos; en Linux suelen encontrarse en /etc/apache2/). Por desgracia, muchos proveedores de alojamiento web son lo suficientemente subnormales como para negarse a hacerlo (a pesar de que se les razona de que ahorrarán ancho de banda y que, si no, perderán un cliente), por lo que a menudo se precisa tener un servidor dedidado o propio, o condenar a los usuarios a emplear exclusivamente el ASV.
Modificación de mime.types
Se ha de localizar la línea
image/svg+xml svg
que es la que viene por defecto para el tipo de imagen SVG, y modificarla así:
image/svg+xml svg svgz
puesto que los archivos con extensión .svgz también son SVG.
Modificación de mod_mime-defaults.conf
Se han de añadir dos líneas de configuración en el archivo. Por comodidad, localícese la sección que contienen las directivas AddEncoding (muy probablemente encabezadas con #, como comentarios) y añádase la línea
AddEncoding x-gzip .svgz
y después la de las directivas AddType (que generalmente vienen a continuación y también encabezadas con #) para añadir:
AddType image/svg+xml .svgz
Por último, reiníciese el sistema, sobre todo en Linux: del archivo mime.types —que además suele ser un enlace simbólico— dependen muchos servicios y nunca he conseguido que funcione lo descrito en el artículo con un simple apache2ctl restart.
La prueba de que este procedimiento funciona es que puede visualizar este mapa de Gran Canaria con Firefox y Opera.
Encabezamiento en archivos SVG generados con php
Como corolario de todo lo expuesto, para indicar al navegador que el archivo resultante de una ejecución php es un SVG con transmisión comprimida con gzip, las aplicaciones php se han de encabezar (antes de la generación de cualquier contenido) con el código:
header("Content-Type: image/svg+xml");
header("Content-Encoding: x-gzip");
Internet en Linux con una PDA con Windows Mobile
Cómo poner una imagen SVG en una página web
El proyecto AGG: Anti-Grain Geometry
Cómo visualizar SVG en Firefox para Linux
Visualización de SVG (recapitulación)
Cómo visualizar SVG en Safari para Mac
Cómo visualizar SVG en Opera para Windows Mobile
Cómo visualizar SVG en Opera
Esta sección está en Technorati
Cómo visualizar SVG en Firefox para Windows


42046
18718
11653
10637
7999
1611
1437
1177
998
840
741
676
609
577
572
355
353
284
261
258
236
228
207
193
123
120
117
107
102
100
83
71
70
66
65
48
38
36
32
31
29
28
28
26
24
23
23
19
19
19
17
15
14
13
13
13
13
12
12
11
11
10
9
8
8
7
7
6
6
6
5
4
4
4
3
3
3
3
3
2
2
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1