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:
|
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
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.
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> %}