Поиск и удаление потерянных веб-страниц, изображений и других связанных файлов - PullRequest
14 голосов
/ 09 ноября 2009

Я работаю над несколькими веб-сайтами, файлы которых датируются 2000 годом. Со временем эти сайты органически выросли, что привело к большому количеству потерянных веб-страниц, включая файлы, изображения, файлы CSS, файлы JavaScript и т. Д. потерянные файлы вызывают ряд проблем, в том числе плохую ремонтопригодность, возможные дыры в безопасности, плохое качество обслуживания клиентов и сводят с ума OCD / GTD, таких как я, сумасшедшие.

Число этих файлов исчисляется тысячами, поэтому полностью ручное решение невозможно. В конечном счете, процесс очистки потребует довольно больших усилий по обеспечению качества, чтобы гарантировать, что мы случайно не удалили необходимые файлы, но я надеюсь разработать технологическое решение, которое поможет ускорить ручные операции. Кроме того, я надеюсь внедрить процессы / утилиты, чтобы предотвратить возникновение такого состояния дезорганизации в будущем.

Условия окружающей среды:

  • Классический ASP и .Net
  • Windows-серверы под управлением IIS 6 и IIS 7
  • Несколько сред (Dev, Integration, QA, Stage, Prodction)
  • TFS для контроля версий

Прежде чем начать, я хотел бы получить отзывы от других, которые успешно прошли аналогичный процесс.

В частности, я ищу:

  • Процесс идентификации и очистки потерянных файлов
  • Процесс поддержания чистоты среды от потерянных файлов
  • Утилиты, помогающие идентифицировать потерянные файлы
  • Утилиты, помогающие идентифицировать неработающие ссылки (после удаления файлов)

Я не ищу:

  • Решения для моего организационного ОКР ... Мне нравится, как я.
  • Snide комментарии о нас по-прежнему с использованием классического ASP. Я уже чувствую боль. Нет необходимости втирать его.

Ответы [ 4 ]

2 голосов
/ 09 ноября 2009

Сначала я подумал, что вы могли бы уйти, отсканировав файлы на наличие ссылок, а затем проведя различие по структуре папок - но это идентифицирует только простых сирот, а не наборов потерянных файлов, которые ссылаются друг на друга. Таким образом, использование grep, вероятно, не поможет вам в этом.

Это не тривиальное решение, но может стать отличной утилитой для поддержания вашей среды в чистоте (и, следовательно, стоит усилий). Кроме того, вы можете повторно использовать его во всех средах (и делиться им с другими!)

Основная идея состоит в том, чтобы настроить и заполнить диаграмму направленности, в которой ключ каждого узла является абсолютным путем. Это делается путем сканирования всех файлов и добавления зависимостей - например:

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

Затем вы можете определить все ваши «доступные» файлы, выполнив BFS на корневой странице.

С помощью диаграммы направленности вы также можете классифицировать файлы по степени их входного и выходного уровня. В приведенном выше примере:

/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

Итак, вы в основном ищите файлы, которые в = 0 были оставлены.

Кроме того, файлы с out = 0 будут терминальными страницами; что может или не может быть желательно на вашем сайте (как подсказывает ошибка, это страница с ошибкой).

1 голос
/ 09 ноября 2009

Шаг 1. Создайте список страниц на вашем сайте, которые определенно видны. Один из разумных способов создать этот список - проанализировать файлы журнала на страницах, которые посещают люди.

Шаг 2. Запустите инструмент, который рекурсивно находит топологию сайта, начиная со специально написанной страницы (которую вы создадите на своем сайте), на которой есть ссылка на каждую страницу в шаге 1. Один из инструментов, который может это сделать, - Xenu's Link Sleuth . Он предназначен для поиска неработающих ссылок, но в нем также будут перечислены живые ссылки. Это может быть выполнено извне, поэтому нет проблем с безопасностью при установке «странного» программного обеспечения на ваш сервер. Вам придется время от времени следить за этим, поскольку на вашем сайте могут быть бесконечные страницы и тому подобное, если у вас есть ошибки или что-то в этом роде.

Шаг 3. Запустите инструмент, который рекурсивно отображает ваш жесткий диск, начиная с веб-каталога вашего сайта. Я не могу думать ни о одном из них, но писать это должно быть тривиально и безопаснее, поскольку это будет выполняться на вашем сервере.

Шаг 4: Получите результаты шагов 2 и 3, программно сопоставьте № 2 с № 3. Все, что находится в # 3, а не в # 2, может быть страницей-сиротой.

Примечание. Этот метод плохо работает с материалами, защищенными паролем, а также плохо работает с сайтами, сильно зависящими от динамически генерируемых ссылок (динамическое содержимое хорошо, если ссылки согласованы).

1 голос
/ 09 ноября 2009

Здесь нет грубых комментариев ... Я чувствую вашу боль, поскольку большая часть нашего сайта все еще в классическом ASP.

Я не знаю ни одной полностью автоматизированной системы, которая будет волшебной пулей, но у меня есть пара идей о том, что может помочь. По крайней мере, так мы очистили наш сайт.

Во-первых, хотя это вряд ли кажется инструментом для такой работы, я использовал Microsoft Viso, чтобы помочь с этим. У нас есть Visio для корпоративных архитекторов, и я не уверен, есть ли эта функция в других версиях, но в этой версии вы можете создать новый документ, а в папке «выбрать тип чертежа» в папке «Веб-диаграмма» есть опция для «Карты веб-сайта» (в метрических или американских единицах - это не имеет значения).

Когда вы создаете этот тип чертежа, Visio запрашивает URL-адрес вашего веб-сайта, а затем выходит и сканирует ваш веб-сайт для вас.

Это должно помочь определить, какие файлы являются действительными. Это не идеально, но мы использовали его для поиска файлов в файловой системе, которые не отображаются на чертеже Visio, а затем поиска всего решения в Visual Studio и поиска этого имени файла. Если мы не смогли найти его во всем решении, мы переместили его в папку «Устаревшие» на месяц и удалили, если мы не начали получать жалобы или 404 ошибки на веб-сайте.

Другими возможными решениями было бы использование синтаксического анализатора файла журнала и парсинга ваших журналов за последние n месяцев и поиск пропущенных файлов таким способом, но по сути это было бы много кодирования, чтобы придумать список «известных хороших» файлов, которые на самом деле не лучше, чем опция Visio.

0 голосов
/ 09 ноября 2009

Был там, делал это много раз. Почему типы контента не могут убирать за собой? Лично я бы сделал это примерно так:

1) Получить копию сайта, работающего в среде QA.

2) Используйте selinum (или какой-либо другой инструмент тестирования на основе браузера), чтобы создать набор тестов для работающего материала.

3) Начните удалять вещи, которые должны быть удалены.

4) Запустите тесты из # 2 после удаления содержимого, чтобы убедиться, что оно по-прежнему работает.

5) Повторите # 3 и 4, пока не будете удовлетворены.

...