做织梦站的人,十有八九都碰过这么一桩怪事,明明在后台把文章删得干干净净了,回收站也清空了,可在FTP里一翻,那个HTML文件还老老实实地躺在虚拟空间的目录里。要是用域名直接访问,有时候甚至还能打开这个早已应该消失的页面。这时候第一反应往往是服务器出问题了,或者干脆怀疑自己刚才压根没删成功,回头再去后台确认一遍,文章列表里确实没了,可文件它就是还在。这到底算怎么回事呢。
其实织梦到底删了什么,这个问题得从它生成页面的原理说起。织梦后台删除一篇文章,真正操作的是数据库里那条记录,以及后台里对应的文档状态。换句话说,你删除的是内容索引,是这篇文章在后台列表中的存在,程序把这条数据从文档主表里标成删除,或者直接移入回收站。但问题在于,如果你之前生成过纯静态的HTML文件,也就是栏目设置里开启了生成静态页功能,那么这篇文章早就被编译成了一个个独立的、物理意义上的文件,直接写进了你的虚拟空间硬盘里。后台的删除指令,可没有附带一个递归删除服务器文件的功能,它只管数据库,不管文件系统。
很多老站长的操作习惯是,在后台发布完文章之后就点生成,把文章页、栏目页、首页全部更新成静态文件。这样一旦哪天删除某篇文章,数据库里确实没了,可先前生成的那个文章HTML文件,仍然安静地待在目录结构里,文件名就是文章的ID或者别名,比如多少多少.html。这个文件跟数据库已经没有任何绑定关系了,织梦后台根本不知道有这样一个孤儿文件存在,它自然也就没有办法帮你删掉它。
要是你的织梦站点开启了生成静态功能,然后删除文章,请记住后台不会自动清理对应的静态文件,这个问题其实在早年间各种建站论坛上就有人提过。织梦的删除逻辑设计出来的时候,考虑的是动态浏览模式下的内容移除,用动态模式的时候所有内容都是现查数据库现输出,删除记录之后页面自然就打不开了。可出于性能和SEO考虑,很多站选择了静态生成路线,相当于系统帮你提前盖好了房子,编好了号。等到你某一天要拆掉这座房子,真正操作的时候才发现,你手里那把钥匙只能打开登记册上的格子,却动不了实体房子本身。
虚拟空间里之所以还会残留文件,还有一个容易被忽视的深层原因,空间服务器上做的是文件层面的备份。不少虚拟主机商每晚会自动做一次整站快照备份,这些备份存放在服务器某个隐藏目录里,你FTP登录进去看不到,但它确确实实占着空间。你删掉的文章HTML文件,如果是在备份之后创建的,备份里就带着它,即使网站运行目录下文件真的被清干净了,系统备份文件里仍然躺着这个网页。当然这种备份一般有周期覆盖,但如果你找空间商要备份恢复功能,有时候依然能看到那些旧文件。

还有一种情况,是栏目页和列表页的缓存问题。织梦在某些版本里会在data/cache或者别的临时目录生成缓存文件,这些缓存记录着文章的摘要、标题甚至全文,虽然后台文章表里什么都没了,可缓存文件里还存着当时的输出结果。某些时候服务器缓存插件也会介入,当访客请求这个URL时,服务器直接给了缓存内容,根本没去数据库判断文章是否存在,所以页面照样能打开给人看,这就更让人怀疑自己到底删了个什么了。
简单总结一下,织梦后台删除文章和删除站点文件是两回事。你在后台删除数据的操作,只影响到数据库记录,那些静态页面文件还需要到文件管理器或者FTP里手动删。不过文章说过深度清理,得找到对应目录,一般文章页HTML存储在虚拟空间根目录下,如果你的栏目启用了特殊目录命名,路径会嵌套更多。如果不嫌麻烦,后续还可以在服务器上执行搜索,把一些已经没了数据库对应关系的孤儿文件全部揪出来处理掉。
网上有段子说,织梦删文章像极了删前任联系方式,你只删了手机通讯录里的号码,可聊天记录截图、相册里的照片,还大摇大摆躺在手机存储里,不肯走。你得一并动手处理才干净,不然哪天翻相册回忆还给你弹出来,把人吓一跳。这话糙理不糙,道出的就是这个静态文件残留的尴尬现状。
关于织梦删除的文章还在空间这个问题,最直接的解决办法,就是删文章之前先去对应目录把HTML文件给删除,然后再去后台做数据删除操作。如果文章数量大,手动删除费时间,可以考虑在服务器上执行一个命令来批量匹配清理,前提是你对命令行有基本操作能力。如果你用的是自己的VPS或者独立服务器,操作起来更自由,要是共享虚拟主机,那就只能通过FTP或者是主机商提供的文件管理功能,逐个目录找,然后把不想要的HTML文件标记删除。
这些残留文件如果不去理会,短期看不出什么问题,无非是占用一点空间。但长期下去会越积越多,尤其是那种频繁发布又频繁删除内容的运营站,日积月累下来,虚拟空间的容量被这些无用的死文件占据,最后可能连新内容都传不上去,还会拖慢整站速度,因为搜索引擎的爬虫依然能嗅探到这些旧链接,不断尝试去抓取,白白消耗你宝贵的流量。
遇到这种问题不用太慌张,也千万别觉得是自己的操作失误。看清楚文件路径,找到删除方法,按部就班清理干净,以后发布文章之前想清楚要不要留,删除的时候多点一步去删文件,就能避免事后再为这些幽灵页面费劲了。