回收站机制说明
织梦CMS的「内容回收站」并不是一个独立的物理目录,而是数据库中 dede_archives 表里 arcrank=-2 的文章集合。删除文章时,织梦默认不会立即从数据库移除记录,而是把 arcrank 改为 -2,标记为「已删除」状态。这种软删除机制让站长有反悔机会,但如果不主动清空,回收站会越积越大,拖慢数据库。
原因分析
1. 误删文章需要恢复
编辑手滑删错文章是常见情况,回收站能救回数据。
2. 数据库膨胀
长期不清空回收站,dede_archives 表越来越大,查询变慢。
3. SEO 历史包袱
已删除的文章如果还在数据库中,可能被静态生成重新输出,造成死链。
回收站位置
后台路径
登录织梦后台,依次进入「核心 → 内容管理 → 内容回收站」,即可看到所有已删除文章列表。
直接 URL
https://yourdomain.com/dede/recycling.php
如果菜单中找不到,可以直接访问上述 URL。
清空步骤
步骤一:进入回收站列表
在回收站页面可以看到所有已删除文章,包含标题、栏目、删除时间。
步骤二:选择处理方式
- 还原:把
arcrank改回 0,文章恢复到原栏目。 - 彻底删除:从数据库中物理删除该条记录。
步骤三:批量清空
勾选全部文章,点击「彻底删除」按钮。如果有大量文章(几百上千条),建议分批操作,避免单次请求超时。
步骤四:清理关联数据
彻底删除后,还需清理 dede_addonarticle、dede_arctiny 等关联表的残留数据:
DELETE FROM dede_addonarticle WHERE aid NOT IN (SELECT id FROM dede_archives);
DELETE FROM dede_arctiny WHERE id NOT IN (SELECT id FROM dede_archives);
DELETE FROM dede_taglist WHERE aid NOT IN (SELECT id FROM dede_archives);
步骤五:优化数据表
OPTIMIZE TABLE dede_archives, dede_addonarticle, dede_arctiny;
回收表空间,提升查询速度。
配置示例
如果想关闭软删除机制,直接物理删除:
打开 dede/content_list.php,找到 DelArc() 函数,把:
$dsql->ExecuteNoneQuery("UPDATE `dede_archives` SET arcrank='-2' WHERE id='$aid'");
改为:
$dsql->ExecuteNoneQuery("DELETE FROM `dede_archives` WHERE id='$aid'");
$dsql->ExecuteNoneQuery("DELETE FROM `dede_addonarticle` WHERE aid='$aid'");
$dsql->ExecuteNoneQuery("DELETE FROM `dede_arctiny` WHERE id='$aid'");
注意事项
- 清空回收站前建议备份
dede_archives表,避免误删无法恢复。 - 关联表数据必须同步清理,否则会出现「文章已删但附加表残留」的脏数据。
- 彻底删除后需重新生成栏目与文档HTML,否则前端仍会显示已删除文章。
- 建议每月定期清空回收站,避免数据堆积。
如果想完全禁用回收站功能,可以在「系统基本参数 → 内容设置」中关闭「启用内容回收站」。
建议与行动
回收站是数据安全的最后一道防线,但也是数据库膨胀的隐患。建议站长建立「月度清空」习惯,每月初花十分钟清空一次回收站,同时优化数据表。对于内容频繁更新的站点,可以写个定时脚本,自动清理 30 天前的回收站文章,从源头控制数据库体积。今天就先去后台看看回收站里有多少积压文章,清掉不需要的,让数据库轻装上阵。