2009-11-09 6 views
13

Estoy trabajando en una serie de sitios web con archivos que datan de 2000. Estos sitios han crecido orgánicamente en el tiempo dando como resultado un gran número de páginas web huérfanas, incluyen archivos, imágenes, archivos CSS, archivos JavaScript, etc. ... Estos archivos huérfanos causan una serie de problemas, como mantenimiento deficiente, posibles agujeros de seguridad, mala experiencia del cliente y volviendo locos a los OCD/GTD como yo.Encontrar y eliminar páginas web huérfanas, imágenes y otros archivos relacionados

Estos archivos son miles por lo que una solución completamente manual no es factible. En última instancia, el proceso de limpieza requerirá un esfuerzo de QA bastante grande para garantizar que no hayamos borrado involuntariamente los archivos necesarios, pero espero desarrollar una solución tecnológica para ayudar a acelerar el esfuerzo manual. Además, espero poner procesos/utilidades en su lugar para ayudar a prevenir que este estado de desorganización ocurra en el futuro.

Consideraciones Medio Ambiente:

  • clásico ASP y .Net
  • servidores Windows con IIS 6 y IIS 7 ambientes
  • múltiples (Dev, integración, control de calidad, Escenario, prodction)
  • TFS para control de origen

Antes de comenzar, me gustaría obtener algunos comentarios de otras personas que han navegado con éxito ed un proceso similar.

En concreto me estoy buscando:

  • Proceso para la identificación y limpieza de archivos huérfanos
  • Proceso para el mantenimiento de ambientes limpios de archivos huérfanos
  • utilidades que ayudan a identificar los archivos huérfanos
  • utilidades que ayudan identificar enlaces rotos (una vez que se han eliminado los archivos)

I a m no estoy buscando:

  • Soluciones a mi OCD organizacional ... Me gusta cómo estoy.
  • Comentarios de Snide acerca de nosotros todavía usando ASP clásico. Ya siento el dolor No hay necesidad de frotarlo.

Respuesta

1

Paso 1: Establezca una lista de páginas en su sitio que sean definitivamente visibles. Una forma inteligente de crear esta lista es analizar los archivos de registro de las páginas visitadas por las personas.

Paso 2: ejecute una herramienta que recursivamente encuentre la topología del sitio, comenzando desde una página especialmente escrita (que hará en su sitio) que tiene un enlace a cada página en el paso 1. Una herramienta que puede hacer esto es Xenu's Link Sleuth . Está destinado a encontrar enlaces muertos, pero también incluirá enlaces en vivo. Esto se puede ejecutar externamente, por lo que no hay problemas de seguridad con la instalación de software 'extraño' en su servidor. Tendrás que vigilar esto ocasionalmente ya que tu sitio puede tener infinitas páginas y cosas similares si tienes errores o lo que sea.

Paso 3: ejecute una herramienta que asigna de forma recursiva su disco duro, comenzando desde el directorio web de su sitio. No puedo pensar en ninguno de estos en la cabeza, pero escribir uno debe ser trivial, y es más seguro ya que se ejecutará en su servidor.

Paso 4: tome los resultados de los pasos 2 y 3, programáticamente, haga coincidir el n. ° 2 con el n. ° 3. Cualquier cosa en el # 3 que no está en el # 2 es potencialmente una página huérfana.

Nota: Esta técnica funciona mal con cosas protegidas con contraseña, y también funciona mal con sitios que dependen fuertemente de enlaces generados dinámicamente (el contenido dinámico está bien si los enlaces son consistentes).

1

No hay comentarios sarcásticos aquí ... Siento su dolor ya que una gran parte de nuestro sitio sigue estando en ASP clásico.

No conozco ningún sistema totalmente automático que sea una solución mágica, pero me gustaría tener algunas ideas para ayudar. Al menos así es como limpiamos nuestro sitio.

En primer lugar, aunque apenas parece la herramienta para tal trabajo, he usado Microsoft Viso para ayudar con esto. Tenemos Visio para Enterprise Architects, y no estoy seguro de si esta característica está en otras versiones, pero en esta versión, puede crear un nuevo documento, y en "elegir tipo de dibujo" en la carpeta "Diagrama Web", hay una opción para un "Mapa del sitio web" (unidades métricas o de EE. UU., no importa).

Cuando crea este tipo de dibujo, Visio le solicita la URL de su sitio web, y luego se marcha y rastrea su sitio web por usted.

Esto debería ayudar a identificar qué archivos son válidos. No es perfecto, pero la forma en que lo usamos fue encontrar los archivos en el sistema de archivos que no aparecían en el dibujo de Visio y luego extraer toda la solución en Visual Studio y buscar el nombre del archivo. Si no pudimos encontrarlo en toda la solución, lo cambiamos a una carpeta "Obsoleta" durante un mes y lo eliminamos si no comenzamos a recibir quejas o errores 404 en el sitio web.

Otras posibles soluciones sería utilizar analizador de archivo de registro y analizar los registros de los últimos n meses y buscar los archivos que faltan de esta manera, pero que serían esencialmente un montón de codificación para llegar a una lista de " buenos archivos conocidos que realmente no es mejor que la opción de Visio.

2

Al principio pensé que podría escaparse escaneando archivos para enlaces, y luego haciendo un diff en contra de su estructura de carpetas, pero esto solo identifica huérfanos simples, no colecciones de archivos huérfanos que se referencian entre sí. Entonces, usar grep probablemente no te llevará hasta allí.

Esta no es una solución trivial, pero sería una excelente utilidad para mantener su entorno limpio (y por lo tanto, vale la pena el esfuerzo). Además, puede volver a utilizarlo en todos los entornos (y compartirlo con otros)

La idea básica es configurar y graficar un gráfico direccional donde la clave de cada nodo es una ruta absoluta. Esto se hace mediante el escaneo de todos los archivos y la adición de dependencias - por ejemplo:

/index.html  -> /subfolder/file.jpg 
       -> /subfolder/temp.html 
       -> /error.html 
/temp.html  -> /index.html 
/error.html  
/stray.html  -> /index.html 
/abandoned.html 

A continuación, se puede identificar todos sus archivos "al alcance" haciendo una BFS en su página raíz.

Con el gráfico direccional, también puede clasificar los archivos por su grado de entrada y salida. En el ejemplo anterior:

/index.html  in: 1 out: 2 
/temp.html  in: 1 out: 1 
/error.html  in: 1 out: 0 
/stray.html  in: 0 out: 1 
/abandoned.html in: 0 out: 0 

Así, que está básicamente en busca de archivos que tienen en = 0 que son abandonados.

Además, los archivos que tienen out = 0 van a ser páginas de terminal; que puede o no ser deseable en su sitio (como sugiere el error, es una página de error).

+0

Quizás un proyecto de código abierto esté en orden aquí. –

+0

Estoy de acuerdo con eso. :) – emptyset

0

He estado allí, hecho eso muchas veces. ¿Por qué no pueden los tipos de contenido limpiarse después de ellos? Personalmente, me gustaría llegar a algo como esto:

1) Obtenga una copia del sitio ejecutándose en un entorno de control de calidad.

2) Use selinum (o alguna otra herramienta de prueba basada en navegador) para crear un conjunto de pruebas de cosas que funcionen.

3) Comience a eliminar cosas que se deben eliminar.

4) Ejecute las pruebas desde el n. ° 2 después de eliminar las cosas para asegurar que sigan funcionando.

5) Repita #s 3 & 4 hasta el satisfecho.

+0

Creo que OP está buscando una solución menos manual. la pregunta está más centrada en el n. ° 3, necesitan determinar qué se puede eliminar. – Tester101

Cuestiones relacionadas