我网站文章就一千篇,每次点“生成HTML”都要等五分钟,后台像死机一样,咋回事?
答:兄弟,你这不是个例,织梦的静态生成是“单线程傻小子”——它一篇一篇地慢慢写文件,不搞并行,不搞缓存,一千篇就要写一千次磁盘,慢是必然的,你先打开/data/admin/下的config.php,找到$cfg_cachemtime,把它从默认的600改成5,这是模板缓存刷新间隔,改成5秒后生成时就不必反复读旧缓存了。“系统设置→性能优化”里,把“内存缓存”从“文件”改成“Redis”,前提是你服务器装了Redis,没装?那至少把“模板编译缓存”和“SQL缓存”都设为“不缓存”,虽然牺牲一点前台速度,但后台生成能快一倍。
织梦CMS后台卡成PPT?老运维教你三招把生成速度拉满
问:我栏目建了三十多个,每个下面几百篇文章,能不能只生成某个栏目的HTML?每次全站生成太要命了。
答:能,而且必须这么干,在“核心→批量生成”里,别选“所有栏目”,点“选择栏目”打勾你要的那一两个,更狠的是,你可以在“系统设置→SQL命令行”里先删掉已生成但没更新的旧文章HTML,比如DELETE FROM#@__archivesWHERE arcrank='-1' AND id<1000,把那些未审核的旧文件清掉,再分批次生成。修改一个栏目,就只生成那个栏目;改一个模板,就只生成用到这个模板的栏目,别没事点“全站更新”,那是给服务器上刑。
问:我用的是虚拟主机,不是VPS,Redis装不了,内存就512M,怎么破?
答:虚拟主机别硬扛,你去“系统设置→性能优化”里,把“分页生成间隔”改成10(毫秒),这会让每生成一篇停一下,不憋着一次性冲死内存,然后把“文件保存方式”从“文件存储”改成“数据库存储”——这会慢但稳,页面访问时动态读库,不再物理生成HTML文件,相当于你放弃了“纯静态”的名头,但换来了后台不卡死,最实在的:把旧文章先移到“回收站”,再清空回收站,删掉多余的历史版本,空间和内存都能腾出来,你肯定积压了几百篇草稿和日志没清理。
问:我按教程改了模板,但首页死活不更新,还是老样子,为啥?
答:八成是你没“强制刷新”首页的缓存,织梦生成逻辑是:如果首页HTML文件存在,且更新时间比模板文件新,它就跳过,你改完模板后,去“生成→更新主页HTML”,把“是否强制生成”选“是”,并且手动删掉根目录下的index.html(浏览器会误读这个文件),你浏览器缓存也清一下——按Ctrl+F5强制刷新页面,别怪织梦,这锅它有时候是真冤。
问:我想在首页调用某个指定栏目(最新优惠”)的5条标题,代码怎么加?
答:在模板的index.htm里,你想放的位置写这段:
{dede:arclist typeid='5' row='5' titlelen='30'}
<li><a href="[field:arcurl/]">[field:title/]</a></field>
{/dede:arclist}
把typeid='5'换成你栏目ID(在后台栏目管理里,鼠标移到栏目名上,浏览器左下角显示id=xxx),如果这个栏目是“单页”模式,那就用{dede:type typeid='5'}配合[field:content/],还有,如果你用的是“随机推荐”,把orderby='rand'加进去。改完模板必须去生成对应页面,否则白搭。
问:SEO标题我该怎么填?我填了但搜索显示的是固定名,排前面的都是别人家的。 被“全局变量”覆盖了,在“系统设置→系统基本参数→站点标题”里,如果你填了内容,它就强制盖掉每页的SEO标题,正确做法:全局站点标题留空,然后去每个栏目的“栏目SEO”填“栏目名称_关键词_站点名”,文章页面呢,在发文章时把“文档标题”写清楚,别偷懒用默认的,首页标题在“生成→更新主页HTML”那个页面右上角有“首页SEO标题”单独填,别漏了。
问:会员注册功能开了,但前台没入口,怎么加一个登录按钮?
答:织梦默认会员接口是/member/index.php,你模板的头部加一句:
<a href="/member/index.php">登录</a> | <a href="/member/index_do.php?fmdo=user&dopost=regnew">注册</a>
如果没显示,去“系统→SQL命令行”执行:UPDATE#@__sys_configSETvalue='Y' WHEREvarname='cfg_mb_open'——这会把会员开关强制打开,接着去“会员→会员设置”里把“用户体验”里的“开启会员中心”选“是”,记得把member目录下的index.php权限改成755,否则会报403。
问:我想在首页放一个浮动广告,但不想改代码,后台有现成位置吗?
答:有,进“广告管理→增加新广告”,选“对联广告”或“浮动广告”,代码里用{dede:myad name='你的广告位名称'/}调用,如果你嫌它自带的广告样式丑,你可以在广告内容里粘贴自己的HTML和JS代码。注意:广告位名称不要用中文,用拼音或英文,否则调用时容易编码出错,还有,广告是“按栏目”生效的,你在首页调用要选“全局”或“首页”这个投放范围。
问:我后台登录后,每次还要输验证码,烦死了,能去掉吗?
答:能,但不建议,这是防爆破的,你非要去,就打开/data/safe/inc_safe_config.php,找到$safe_gdopen,把其中的7(验证码标识)删掉,只剩一个数值(比如1,3,5),然后保存,如果你后台路径没改过,风险自负。我更推荐你改后台登录路径,把/dede改成/manage-2025,在根目录config.php里改$cfg_cmspath,这比去掉验证码安全十倍。
问:我发文章时,图片上传总是失败,提示目录不可写,怎么弄?
答:权限问题,你/uploads目录下所有文件夹要777权限,但很多主机安全策略禁止777,那就改成755,并把目录属主设为www:www(用chown命令),织梦上传图片默认还走“远程保存”,如果失败,去“系统→系统基本参数→附件设置”里,把“开启远程图片本地化”关掉,还有,如果上传超大图片,PHP内存不够,在php.ini里改memory_limit = 128M和upload_max_filesize = 20M。
问:我按你说的做了,后台还是慢,有没有终极方案?
答:终极方案就一句:升级到PHP7.4+,用MySQL5.7+,关掉所有不必要的模块,织梦本身是十几年的老架构,它吃单核CPU,你换一个高频CPU的独立服务器,比优化任何缓存都管用,如果你不差钱,换PHP8.0配合JIT加速,后台速度能翻倍,静态生成慢是物理瓶颈,不是代码缺陷,你非要全站天天更新,那谁来了都没用。实际运营中,建议你:一篇文章发布→只生成该文章页面和所属栏目列表页;每周手动生成一次首页,这样鱼和熊掌你都拿到了。



发表评论