我正在处理许多网站,其文件可追溯到 2000 年。这些网站随着时间的推移而有机增长,导致大量孤立网页,包括文件、图像、CSS 文件、JavaScript 文件等...这些孤立文件会导致许多问题,包括可维护性差、可能存在安全漏洞、客户体验差以及让像我这样的 OCD/GTD 怪胎发疯。
这些文件的数量有数千个,因此完全手动的解决方案是不可行的。最终,清理过程将需要相当大的质量检查工作,以确保我们不会无意中删除所需的文件,但我希望开发一种技术解决方案来帮助加快手动工作速度。此外,我希望将流程/实用程序落实到位,以帮助防止将来发生这种困惑状态。
环境考虑因素:
- 经典 ASP 和 .Net
- 运行 IIS 6 和 IIS 7 的 Windows 服务器
- 多种环境(开发、集成、QA、阶段、生产)
- 用于源代码控制的 TFS
在开始之前,我想从成功完成类似流程的其他人那里获得一些反馈。
具体来说,我正在寻找:
- 识别和清理孤立文件的流程
- 保持环境中没有孤立文件的过程
- 帮助识别孤立文件的实用程序
- 帮助识别损坏链接的实用程序(文件删除后)
我不是在寻找:
- 针对我的组织强制症的解决方案...我喜欢我现在的样子。
- Snide 对我们仍在使用经典 ASP 的评论。我已经感觉到疼痛了。无需擦进去。
最佳答案
起初,我认为您可以通过扫描文件中的链接,然后对文件夹结构进行比较来摆脱困境 - 但这只能识别简单的孤立文件,而不是相互引用的孤立文件的集合。因此,使用 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
因此,您基本上是在寻找已放弃的 in = 0 的文件。
此外,out = 0 的文件将成为终端页面;这在您的网站上可能是理想的,也可能是不理想的(如错误所示,这是一个错误页面)。
关于asp.net - 查找并删除孤立的网页、图像和其他相关文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1702683/