Поиск и удаление потерянных веб-страниц, изображений и других связанных файлов
Я работаю над несколькими сайтами с файлами, относящимися к 2000 году. Эти сайты со временем стали органически расти, что привело к большому количеству потерянных веб-страниц, включая файлы, изображения, файлы CSS, файлы JavaScript и т.д. Эти сиротские файлы вызывают ряд проблем, в том числе плохую ремонтопригодность, возможные дыры в безопасности, плохой опыт работы с клиентами и вождение уродцев OCD/GTD, таких как я, сумасшедший.
Эти номера файлов в тысячах, поэтому полностью ручное решение невозможно. В конечном счете, процесс очистки потребует достаточно больших усилий по обеспечению качества, чтобы гарантировать, что мы не случайно удалили необходимые файлы, но я надеюсь разработать технологическое решение, помогающее ускорить ручное усилие. Кроме того, я надеюсь поставить процессы/утилиты на место, чтобы предотвратить предотвращение такого состояния дезорганизации в будущем.
Среда:
- Классический ASP и .Net
- Серверы Windows с IIS 6 и IIS 7
- Несколько сред (Dev, Integration, QA, Stage, Prodction)
- TFS для управления исходным кодом
Прежде чем начать, я хотел бы получить отзывы от других, которые успешно прошли аналогичный процесс.
В частности я ищу:
- Процесс идентификации и очистки потерянных файлов
- Процесс сохранения среды в сиротских файлах
- Утилиты, которые помогают идентифицировать потерянные файлы
- Утилиты, которые помогают идентифицировать неработающие ссылки (после удаления файлов)
Я не ищу:
- Решения для моего организационного OCD... Мне нравится, как я.
- Snide комментирует, что мы все еще используем классический ASP. Я уже чувствую боль. Нет необходимости втирать его.
Ответы
Ответ 1
Шаг 1: Установите список страниц на вашем сайте, которые определенно видны. Одним из разумных способов создания этого списка является анализ файлов журнала для посещений страниц.
Шаг 2. Запустите инструмент, который рекурсивно находит топологию сайта, начиная со специально написанной страницы (которую вы сделаете на своем сайте), которая имеет ссылку на каждую страницу на шаге 1. Один инструмент, который может это сделать, - Xenu Link Sleuth. Он предназначен для поиска мертвых ссылок, но в нем также будут перечислены живые ссылки. Это можно запустить извне, поэтому нет проблем с безопасностью при установке на ваш сервер "странного" программного обеспечения. Вам нужно будет следить за этим, потому что ваш сайт может иметь бесконечные страницы и тому подобное, если у вас есть ошибки или что-то еще.
Шаг 3. Запустите инструмент, который рекурсивно отобразит ваш жесткий диск, начиная с веб-каталога вашего сайта. Я не могу придумать ни одного из этих вариантов с моей головы, но писать одно должно быть тривиально и безопаснее, так как это будет работать на вашем сервере.
Шаг 4: Выполните результаты шагов 2 и 3, программно совпадающих С# 2 против # 3. Все, что в № 3 не в # 2, потенциально является сиротской страницей.
Примечание. Этот метод плохо работает с защищенными паролем материалами, а также плохо работает с сайтами, основанными на динамически сгенерированных ссылках (динамический контент хорош, если ссылки согласованы).
Ответ 2
Сначала я подумал, что вы можете уйти, сканируя файлы для ссылок, а затем делаете разницу с вашей структурой папок, но это только идентифицирует простых сирот, а не коллекции потерянных файлов, которые ссылаются друг на друга. Таким образом, использование grep, вероятно, не приведет вас сюда.
Это не тривиальное решение, но сделает отличную полезность для поддержания чистоты вашей среды (и, следовательно, стоит усилий). Кроме того, вы можете повторно использовать его во всех средах (и делиться ими с другими!)
Основная идея заключается в настройке и заполнении диаграммы направленности, где каждый ключ node является абсолютным путем. Это делается путем сканирования всех файлов и добавления зависимостей - например:
/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 будут терминальными страницами; который может быть или не быть желательным на вашем сайте (как указывает ошибка, это страница с ошибкой).
Ответ 3
Никаких комментариев здесь нет... Я чувствую вашу боль, поскольку большая часть нашего сайта все еще находится в классическом ASP.
Я не знаю никаких полностью автоматизированных систем, которые будут волшебной пулей, но у меня есть несколько идей, которые могли бы помочь. По крайней мере, как мы очистили наш сайт.
Во-первых, хотя это вряд ли похоже на инструмент для такой работы, я использовал Microsoft Viso, чтобы помочь в этом. У нас есть Visio for Enterprise Architects, и я не уверен, что эта функция находится в других версиях, но в этой версии вы можете создать новый документ, а в "выбрать тип рисунка" в папке "Веб-диаграмма" есть вариант для "Карты веб-сайта" (либо метрических, либо американских единиц - это не имеет значения).
При создании этого типа чертежа Visio запрашивает URL-адрес вашего веб-сайта, а затем выходит и сканирует ваш веб-сайт для вас.
Это должно помочь определить, какие файлы действительны. Это не идеально, но так, как мы использовали, было найти файлы в файловой системе, которые не отображались в чертеже Visio, а затем вытащить все решение в Visual Studio и выполнить поиск этого имени файла. Если мы не смогли найти его во всем решении, мы переместили его в папку "Устаревшая" в течение месяца и удалили его, если мы не начали получать жалобы или 404 ошибки на веб-сайте.
Другими возможными решениями были бы использование анализатора файлов журналов и анализ ваших журналов в течение последних n месяцев и поиск отсутствующих файлов таким образом, но это по существу было бы большим количеством кодирования, чтобы составить список "известных хороших", файлы, которые действительно не лучше, чем опция Visio.
Ответ 4
Был там, сделал это много раз. Почему типы содержимого не могут очищаться после себя? Лично я ударил его примерно так:
1) Получите копию сайта, работающего в среде QA.
2) Используйте selinum (или какой-либо другой инструмент для тестирования на основе браузера), чтобы создать набор тестов для работы, который работает.
3) Начните удаление материалов, которые необходимо удалить.
4) Запустите тесты из # 2 после удаления материала, чтобы обеспечить его работу.
5) Повторяйте #s 3 и 4 до тех пор, пока не будете удовлетворены.