Referencia del conjunto de reglas

El servicio de imágenes admite un mecanismo de preprocesamiento de solicitudes sencillo que se basa en reglas de coincidencia y sustitución de expresiones regulares.

Colecciones de reglas de preprocesamiento (conjuntos de reglas) se puede adjuntar a catálogos de imágenes o al catálogo predeterminado. Las reglas del catálogo predeterminado se aplican solo si la solicitud no identifica un catálogo de imágenes principal específico.

Las reglas de preprocesamiento de solicitudes pueden modificar la ruta y las partes de consulta de las solicitudes antes de que las procese el analizador de Platform Server, incluida la manipulación de la ruta, la adición de comandos, el cambio de valores de los comandos y la aplicación de plantillas o macros. Las reglas también se pueden utilizar para configurar y anular ciertas funciones de seguridad que normalmente se controlan únicamente con atributos de catálogo, como confusión de solicitudes, marcado de agua, así como para limitar el servicio a direcciones IP de cliente específicas.

Los conjuntos de reglas se almacenan como archivos de documento XML. La ruta relativa o absoluta del archivo del conjunto de reglas debe especificarse en attribute::RuleSetFile.

Estructura general

 <?xml version="1.0" encoding="UTF-8"?>
<ruleset>
   <rule>
      <expression>
<varname>
  expression
</varname></expression>
      <substitution>
<varname>
  substitution
</varname></substitution>
      <addressfilter>
<varname>
  addressFilter
</varname></addressfilter>
      <header>
<varname>
  headerValue
</varname></header>
   </rule>
</ruleset>

La variable <?xml> y <ruleset> los elementos siempre son necesarios en un archivo XML de conjunto de reglas válido, aunque no se hayan definido reglas reales.

One <ruleset> elemento que contiene cualquier número de <rule> están permitidos.

El contenido de los archivos de reglas de preprocesamiento distingue entre mayúsculas y minúsculas.

Validación del conjunto de reglas

Una copia de RuleSet.xsd se proporciona en la carpeta del catálogo y debe utilizarse para validar un archivo del conjunto de reglas antes de registrarlo en el catalog.ini archivo. Tenga en cuenta que Image Serving utiliza una copia interna de RuleSet.xsd para validación.

Procesamiento previo de URL

Antes de cualquier otro procesamiento, se analiza parcialmente una solicitud HTTP entrante para determinar qué catálogo de imágenes debe aplicarse. Una vez identificado el catálogo, se aplica el conjunto de reglas para el catálogo seleccionado (o el catálogo predeterminado, si no se identificó ningún catálogo específico).

La variable <rule> se buscan los elementos en el orden especificado para que coincidan con el contenido del <expression> element ( expression).

Si <rule> coincide, la variable substitution se aplica y la cadena de solicitud modificada se pasa al analizador de solicitudes del servidor para el procesamiento normal.

Si no se realiza una coincidencia correcta al finalizar el <ruleset> se alcanza, la solicitud se pasa al analizador sin modificación.

El atributo OnMatch

El comportamiento predeterminado se puede modificar con la variable OnMatch del <rule> elemento. OnMatch se puede configurar como break (predeterminado), continueo error.

Elemento y atributo Comportamiento cuando se produce una coincidencia

<rule OnMatch="break">

El procesamiento de reglas se termina inmediatamente después de que se haya aplicado la sustitución de esta regla. Predeterminado.

<rule OnMatch="continue">

La sustitución se aplica y el procesamiento continúa con la siguiente regla.

<rule OnMatch="error">

El procesamiento de reglas se termina inmediatamente y se devuelve al cliente un estado de respuesta "solicitud rechazada".

Anulación de atributos de catálogo

La variable rule opcionalmente, puede definir atributos que anulan los atributos de catálogo correspondientes cuando la regla se encuentra correctamente coincidente. Si varias reglas coincidentes establecen el mismo atributo, prevalecerá el último. Consulte regla para obtener una lista de atributos que se pueden controlar con reglas.

Expresiones regulares

La coincidencia de cadenas simple funciona para aplicaciones muy básicas, pero en la mayoría de los casos se requieren expresiones regulares. Aunque las expresiones regulares son estándar en el sector, la implementación específica varía de una instancia a otra.

package java.util.regex describe la implementación de expresiones regulares específicas que utiliza Image Serving.

Subcadenas capturadas

Para facilitar modificaciones complejas de la URL, las subcadenas pueden capturarse en la expresión incluyendo la subcadena con paréntesis (…). Las subcadenas capturadas se numeran secuencialmente comenzando por 1 según la posición del paréntesis de apertura. Las subcadenas capturadas se pueden insertar en la sustitución utilizando $ *n*, donde n es el número de secuencia de la subcadena capturada.

Administración de archivos de conjuntos de reglas

Se puede adjuntar un archivo de conjunto de reglas a cada catálogo de imágenes con el atributo de catálogo attribute::RuleSetFile. Aunque puede editar el archivo del conjunto de reglas en cualquier momento, el servidor de imágenes reconoce los cambios solo cuando se vuelve a cargar el catálogo de imágenes asociado. Esta recarga se produce cuando se inicia o reinicia el servidor de la plataforma y siempre que el archivo de catálogo principal tenga un .ini para cambiar la fecha del archivo.

Ejemplos

Ejemplo A. Defina una regla que aumente la configuración de calidad de la imagen si el nombre de la imagen tiene el sufijo " _hg":

<rule>
   <expression>(?i)_hg$</expression>
   <substitution>\?&amp;qlt=95,1&amp;resmode=bicub</substitution>
</rule>

La expresión de regla especifica una coincidencia de " _hg" al final de la cadena URL. El sufijo se sustituye por la cadena de consulta especificada que cambia la configuración de calidad de la imagen. Tenga en cuenta que ? el carácter de la cadena de sustitución se escapa, ya que se trata de un carácter especial de las expresiones regulares.

NOTA

La codificación necesaria para el carácter ampersand. Como alternativa, la cadena de sustitución podría incluirse en un bloque CDATA:

<substitution><![CDATA[&qlt=95,1&resmode=bicub]]></substitution>

Ejemplo B. Una aplicación web concreta no permite cadenas de consulta. Defina una regla que traduzca el elemento de ruta final small, mediumo large a una plantilla, usando el resto de la ruta como nombre de la imagen. Por ejemplo, myCat/myImage/small traduciría a myCat/smallTemplate?src=myCat/myImage.

Se pueden utilizar subcadenas para reestructurar la solicitud:

<rule>
   <expression>([^/]+)/(small|medium|large)$</expression>
   <substitution>$2Template?src=sample/$1</substitution>
</rule>

Véase también

paquete java.util.regex

En esta página