Turn on more accessible mode
Skip Ribbon Commands
Skip to main content
Turn on Animations

Fantasmas y ... desfantasmas (?) [ghosted y unghosted pages]

Trucos


SharePoint y WSS utilizan información de las plantillas y la base de datos para generar todas las páginas que el usuario ve en la pantalla: el contenido de cada página, para cada usuario, esta guardado en la base de datos, y el código HTML se encuentra en los archivos (plantillas). Microsoft ha llamado esta técnica "Paginas Fantasmas" ("ghost pages"). Usando FrontPage se puede guardar contenido y diseño en la base de datos.
Autor: Gustavo

Cada vez que una pagina de SPS\WSS es abierta desde FrontPage y guardada de nuevo, no solo el contenido es guardado en la base de datos, sino todo el diseño mas el contenido. Desde este momento se convierte en una "Pagina Desfantasmada" ("unghosted page"). La próxima vez que el usuario llame la pagina, las plantillas no serán utilizadas y todo el contenido mas diseño será recobrado desde la base de datos.

Esto produce dos tipos de problemas:

  1. Una de las ventajas de usar la tecnología de plantillas es que todas las páginas del mismo tipo usan un solo formato. Si es necesario cambiar algo del diseño de la página, o de su funcionalidad, con cambiar la plantilla se cambian automáticamente todas las páginas creadas anteriormente y que se crearán en el futuro. Pero si una o más de las páginas esta "Desfantasmada", esa(s) páginas no reconocerán los cambios pues no utilizan las plantillas.
    Si el Portal contiene solamente unas cuantas paginas con unos cuantos usuarios, esto no es un gran problema: con "Desfantasmar" la página de todos los usuarios se consigue el objetivo. Pero cuando el Portal contiene cientos o miles de usuarios, es físicamente imposible de cambiar todo manualmente.
  2. En el momento que el servidor de SPS\WSS empieza a funcionar, guarda todas las plantillas en memoria RAM, de tal forma que cada vez que se necesite una plantilla, se pueda llamar rápidamente (esta es también la razón por la que SharePoint utiliza tanta memoria RAM en los servidores). Cuando un usuario pide una pagina, la plantilla esta disponible, y solo es necesario llamar una pequeña cantidad de datos de la base de datos y mezclar la información para mostrarla en la pantalla.
    Si la pagina esta "Desfantasmada", mucha mas información es necesaria desde la base de datos, lo que produce mas carga en los servidores de SQL, y mas trafico entre los servidores.

Es posible evitar que una página sea "Desfantasmada" con FrontPage. En la definición de la plantilla se puede usar el atributo "DisableWebDesignFeatures" para evitar que FrontPage guarde la página en la Base de Datos. Añadiendo el siguiente código al archivo "ONET.XML" de la plantilla se consigue este objetivo:

Nota: Las plantillas que WSS utiliza son "STS" y "MPS", que se encuentran en el directorio "C:\Archivos de programa\Archivos comunes\Microsoft Shared\web server extensions\60\TEMPLATE\3082", y el archivo ONET.XML esta bajo el archivo "XML" de cada una de ellas. SPS utiliza las plantillas que se encuentran en los otros directorios.

Una vez que una pagina a sido "Desfantasmada" no es fácil de volverla a "Fantasmar", y Microsoft lo desaconseja (se puede perder el servicio de soporte de Microsoft si se intenta hacerlo). Existe el riesgo de perder la información que se ha añadido a la página, así como toda la información sobre diseño, listas, WebParts, etc. Para hacerlo es necesario hacer modificaciones en la Base de Datos, lo que Microsoft también desaconseja. Cuando la información se guarda en la Base de Datos, se utilizan los campos "Content" y "MetaInfo" de la tabla "Docs". Con hacer un update a "NULL" del record que contiene la información es suficiente:

UPDATE Docs
SET Content = NULL, MetaInfo = NULL
WHERE (Id = ´[GUID de la pagina]´)

Para determinar si una pagina ha sido "Desfantasmada" se puede utilizar el API de WSS. La propiedad "vti_hasdefaultcontent" (bolean) de la clase "SPFileVersion" indica si el proceso ya se ha llevado a cabo o no.