Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/06/2008, 13:11
rProgged
 
Fecha de Ingreso: agosto-2004
Mensajes: 131
Antigüedad: 20 años, 8 meses
Puntos: 2
Propongo solución alternativa a includes dinámicos. Opiniones por favor.

Estimados,

Quebrandome el mate con este tema de los includes dinámicos llegué a una solución bastante rebuscada pero que funciona bien, el tema es que quisiera conocer el tema de los expertos en cuanto a la carga que pueda significar al servidor.

El problema es cuando se quiere incluir un archivo cuyo nombre o ubicación viene desde una BD o una variable, como los SSI no permiten ejecutar codigo no es posible incluirlos. La solución que encontré es mediante FSO copiar el archivo a una ubicación específica del servidor, por ejemplo al archivo "tmp/tmp.asp" en la raiz del sitio. Luego lo que hago es crear el include llamando siempre a este archivo tmp.asp y ya puedo usar el codigo dinámico.

El cuento es que como los SSI se ejecutan antes del ASP, entonces es necesario crear un archivo puente que copie el archivo a ejecutar y luego redireccione a la página en donde se utilizará. En forma práctica seria:

- archivo a incluir: noticias.asp
- archivo puente: puente.asp
- archivo en donde se ejecuta: index.asp

Entonces:

Llamamos a puente entregandole un codigo mediante la url, quedaria algo asi como:
puente.asp?modulo=noticias

Puente.asp
Código:
modulo = request("modulo")

select case modulo:
case "noticias":
	archivo = server.mapPath(".") & "/noticias.asp"
case else 
	archivo = server.mapPath(".") & "/index.asp"
end select

Set fs = CreateObject("scripting.FileSystemObject")
fs.CopyFile archivo, server.mapPath(".") & "/tmp/tmp.asp"

server.execute("index.asp")
y en index.asp
Código:
<!--#include file="tmp/tmp.asp"-->

' todo el resto del proceso
Por favor les pido que, si les parece bien, se den el tiempo de analizar la solución y darme su opinión al respecto, si es muy pesado estar a cada rato copiando un archivo para el server, si seria muy lento tanto direccionamiento interno, etc.

Muchas gracias desde ya, esto funciona bien pero quisiera su opinión antes de comenzar a utilizarla oficialmente.

Saludos cordiales,

Rodrigo