首页查询次数没变,内存占用却比同类站点高出一截,打开 options 表一看 autoload 为 yes 的记录有几百条。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,插件的临时数据和缓存结果都写进了选项表,默认又是自动加载,每次请求都被一次性读进内存并反序列化一遍。
「wp_options autoload」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
SELECT SUM(LENGTH(option_value)) FROM wp_options WHERE autoload = 'yes'; UPDATE wp_options SET autoload = 'no' WHERE option_name LIKE '_transient_%';
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
具体做法是,先统计所有自动加载记录占用的总字节数;把体积大的临时选项单独改成不自动加载;清理过期缓存选项之后再对比一次内存占用。
最后用这个标准收尾,自动加载总长度降到几百 KB,首页内存明显下降。
