Manual de consulta

DTW_CACHE_PAGE


AIX HP-UX Linux OS/2 OS/390 OS/400 PTX SUN Win NT
X






X

Finalidad

Pone en antememoria páginas Web parciales o completas que se generan como consecuencia del proceso de las macros.

Formato

@DTW_CACHE_PAGE(IDantememoria, IDpágina, edad, estado)

Parámetros

Tabla 29. Parámetros de DTW_CACHE_PAGE
Parámetro Uso Descripción
IDantememoria IN Variable de serie que identifica la antememoria en la que se colocará la página.
IDpágina IN Variable de serie que contiene un identificador utilizado para localizar la página puesta en antememoria en una petición de antememoria DTW_CACHE_PAGE subsiguiente. La serie puede ser un URL.
edad IN Variable de serie que contiene un periodo de tiempo en segundos. Este parámetro determina si una página ha caducado. Si la página es más antigua que el valor de edad, la página no se envía al navegador.

Si edad se especifica como -1 y la página existe en la antememoria, Net.Data la envía al navegador de la Web directamente desde la antememoria sin tener en cuenta su antigüedad. Net.Data no sustituye la página en la antememoria.

estado OUT Variable de serie que indica el estado de la página en antememoria. Los valores posibles están en minúsculas:
  • ok: La página de salida se pondrá en antememoria cuando finalice la ejecución de la macro.
  • new: La página no está en la antememoria.
  • renew: La página está en la antememoria, pero ha caducado.
  • no_cache: El identificador de antememoria especificado no existe. Debe estar definido en los archivos de configuración de antememoria. La macro puede seguir ejecutándose sin poner las páginas en la antememoria.
  • inactive: La antememoria que ha especificado ha sido marcada como inactiva. La macro puede seguir ejecutándose sin poner las páginas en la antememoria.
  • busy: La macro ha emitido la función incorporada DTW_CACHE_PAGE antes de esta ejecución. La macro puede seguir ejecutándose.
  • error: Se ha producido un error al intentar comunicarse con la antememoria.

Códigos de retorno

Tabla 30. Códigos de retorno de DTW_CACHE_PAGE
Código de retorno Explicación
-1001 El servidor no ha podido procesar una petición de Net.Data para asignar memoria.
1001 Un parámetro de entrada contenía un valor NULL.
1002 Un parámetro de entrada contenía un valor de serie que consistía en el carácter de terminación nulo.
1003 Se ha transmitido un número incorrecto de parámetros en una llamada de función.
1005 Se ha transmitido un parámetro en una llamada de función que debería haber sido una variable de serie, pero era de un tipo de variable diferente.
1006 Se ha transmitido una serie literal en una llamada de función para un parámetro que debería haber sido un parámetro de salida.
1007 Un parámetro contiene un valor que no es válido.

Notas de utilización

  1. Cuando se invoca, DTW_CACHE_PAGE() intenta recuperar la página especificada de la antememoria y enviarla al navegador de la Web como si fuera la página de salida generada desde la macro. Si se encuentra la página y no ha caducado, Net.Data deja de procesar la macro, sale de la misma y envía la página en antememoria al navegador de la Web.

    Si la página solicitada no está en la antememoria o la página en antememoria existente es más antigua que el valor de edad, Net.Data genera una nueva página de salida. Cuando la macro se completa satisfactoriamente, Net.Data envía la página nueva al navegador y pone la página en antememoria.

  2. Para la mayoría de las aplicaciones de antememoria, especifique DTW_CACHE_PAGE() en la parte superior de la macro para poner en antememoria la totalidad de la página Web que se genera cuando se ejecuta la macro. Esta técnica facilita el mantenimiento de la macro cuando se actualiza la misma. Por ejemplo, cuando la función esté en medio de la macro, es posible que no se tuviera en cuenta en el momento en que una sección de informe de HTML se hubiera añadido con anterioridad en la macro. Net.Data no colocaría en antememoria la nueva salida de informe. Adicionalmente, este método mejora el rendimiento a medida que Net.Data detiene todo proceso ulterior cuando determina que la página está en la antememoria.

    Para las aplicaciones en antememoria avanzadas, puede colocar la función en ubicaciones específicas de la macro cuando necesite tomar la decisión de poner en antememoria en un punto específico durante el proceso, en vez de al principio de la macro. Por ejemplo, es posible que necesite tomar la decisión de poner en antememoria basándose en el número de filas que se devuelve desde una consulta o desde una llamada de función.

Ejemplos

Ejemplo 1: Coloca la función DTW_CACHE_PAGE() al principio de la macro para capturar toda la salida de HTML

%IF (customer_status == "Classic")
@DTW_CACHE_PAGE("mymacro.mac", "http://www.mypage.org", "-1", status)
%ENDIF
 % DEFINE { ...%}
 
...
 
%HTML (Output) {
 <title>This is the page title
 </head>
 <body>
 <center>
 This is the Main Heading
 <p>It is $(time). Have a nice day!
 </body>
 </HTML>
  
%} 

Ejemplo 2: Coloca la función en el bloque de HTML debido a que la decisión de poner en antememoria depende del tamaño de salida de HTML esperado

%DEFINE { ...%}
 
...
 
%FUNCTION(DTW_SQL) count_rows(){
  select count(*) from customer
%REPORT{
      %ROW{
  @DTW_ASSIGN(ALL_ROWS, V1)
%}
%}
%}
 
%FUNCTION(DTW_SQL) all_customers(){
  select * from customer
%}
 
%HTML (Output) {
<HTML>
<head>
 <title>This is the customer list
 </head>
 <body>
 
@count_rows()
 
 %IF (ALL_ROWS > "100")
 @DTW_CACHE_PAGE("mymacro.mac", "http://www.mypage.org", "-1", status)
%ENDIF
 
@all_customers()
 
 </body>
 </HTML>
%}

En este ejemplo, la página se pone en antememoria o se recupera en función del tamaño de la salida de HTML esperado. Sólo se considera que vale la pena poner en antememoria las páginas de salida de HTML cuando la tabla de bases de datos contiene más de 100 filas. Net.Data siempre envía el texto en el bloque OUTPUT, This is the customer list, al navegador después de ejecutar la macro; el texto nunca se pone en antememoria. Las líneas que siguen a la llamada de función, @count_rows(), se ponen en antememoria o se recuperan cuando se cumplen todas las condiciones del bloque IF. Juntas, ambas partes forman una página de salida de Net.Data completa.

Ejemplo 3: Recupera dinámicamente el ID de antememoria y el ID de página puesta en antememoria

%HTML(OUTPUT) {
 %IF (customer == "Joe Smith")
 
@DTW_CACHE_PAGE(@DTW_rGETENV("DTW_MACRO_FILENAME"),
@DTW_rGETENV("URL"),"-1", status)
 
%ENDIF
 
...
 
<HTML>
 <head>
 <title>This is the page title</title>
 </head>
 <body>
 <center>
 <h3>This is the Main Heading</h3>
 <p>It is @DTW_rDATE(). Have a nice day!</p>
  </center>
 </body>
</HTML>
 
%}


[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]