LiteSpeed Cache for WordPress(LSCWP)是一款功能强大的网站加速插件,专为提升WordPress网站的性能和速度而设计。它利用LiteSpeed服务器技术,提供了一整套的缓存和优化功能,帮助网站减少加载时间,提高用户体验和SEO表现。
LiteSpeed Cache的Crawler(爬虫)功能是其重要的一个组成部分,它能够对页面进行预缓存,更快提高网站响应速度。
但是在我新网站上创建litespeed爬虫地图时,总是出现错误,信息显示成功,但是实际上却是失败的,并且提示:
crawler table could not be created! SQL: CREATE TABLE IF NOT EXISTS wp_litespeed_crawler () DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;.Bu bildirimi gizle.
crawler_blacklist table could not be created! SQL: CREATE TABLE IF NOT EXISTS wp_litespeed_crawler_blacklist () DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
Failed to create table crawler_blacklist! SQL: CREATE TABLE IF NOT EXISTS wp_litespeed_crawler_blacklist ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, url varchar(1000) NOT NULL DEFAULT '', res varchar(255) NOT NULL DEFAULT '' COMMENT '-=Not Blacklist, B=blacklist', reason text NOT NULL COMMENT 'Reason for blacklist, comma separated', mtime timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (id), KEY url (url(191)), KEY res (res) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;.
多次咨询litespeed官方客服、插件论坛,给出了一段代码,在数据库中使用SQL执行,但是依然报错,无法解决,并且表示,
well , from the error message the phpMyAdmin gives
index column size too large. the maximm column size is 767 bytes
, I can only find the solution as mysql conf
所以一直没有得到有效解决。
今天又翻出来这个问题,然后重点查询了一下错误信息:
index column size too large. the maximm column size is 767 bytes
发现原因是:
INNODB 引擎,UTF-8,主键字符串 默认最大 767,需要修改
由于
MySQL的
Innodb引擎表索引字段长度的限制为
767`字节,因此对于多字节字符集的大字段或者多字段组合,创建索引时会出现此错误。如果是
utf8mb4
字符集,由于utf8mb4
是4字节字符集,则默认支持的索引字段最大长度是191
字符(767字节/4字节每字符≈191字符),因此在varchar (255)
或char (255)
类型字段上创建索引会失败。如果是
utf8
字符集,由于utf8
是3字节字符集,则默认支持的索引字段最大长度是255
字符(767字节/3字节每字符≈255字符),则varchar (255)
或char (255)
不会失败。
其实上述两个原因我也没有明白什么意思。
但是却找到了解决方法。
官方给出的代码是正确的,但是需要在后面添加一个条件
这是官方给出的代码:
CREATE TABLE IF NOT EXISTS `wp_litespeed_crawler` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`url` varchar(1000) NOT NULL DEFAULT '',
`res` varchar(255) NOT NULL DEFAULT '' COMMENT '-=not crawl, H=hit, M=miss, B=blacklist',
`reason` text NOT NULL COMMENT 'response code, comma separated',
`mtime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
KEY `url` (`url`(191)),
KEY `res` (`res`)
)
CREATE TABLE IF NOT EXISTS `wp_litespeed_crawler_blacklist` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`url` varchar(1000) NOT NULL DEFAULT '',
`res` varchar(255) NOT NULL DEFAULT '' COMMENT '-=Not Blacklist, B=blacklist',
`reason` text NOT NULL COMMENT 'Reason for blacklist, comma separated',
`mtime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
KEY `url` (`url`(191)),
KEY `res` (`res`)
)
后面需要添加
ROW_FORMAT=DYNAMIC
即:
create table test (........) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
也就是:
CREATE TABLE IF NOT EXISTS `wp_litespeed_crawler` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `url` varchar(1000) NOT NULL DEFAULT '', `res` varchar(255) NOT NULL DEFAULT '' COMMENT '-=not crawl, H=hit, M=miss, B=blacklist', `reason` text NOT NULL COMMENT 'response code, comma separated', `mtime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), KEY `url` (`url`(191)), KEY `res` (`res`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
最后创建成功。
但其实这是一个治标不治本的方法,因为根本出问题的原因还是在mysql数据库那里,
对数据库进行设置
set global innodb_file_format = BARRACUDA
set global innodb_large_prefix = ON
注意: 在navicat中执行成功,不清楚重启数据库是否还有效
查看是否生效
show variables like 'character%';
show variables like 'collation_%';
show variables like 'innodb_large_prefix';
show variables like 'innodb_file_format';
可惜我自己测试后,数据库报错,无法重新启动。
最近又发现爬虫地图无法创建了,经过在支持社区咨询,尝试以下代码:
<?php
require( './wp-load.php' );
$response = wp_remote_get( 'https://littleprince.site/sitemap_index.xml' );
echo '<pre>';
var_dump($response);
echo '</pre>';
please try this code , and see if wordpress can get it
you have some kind of WAF it seems, I feel the firewall has blocked reuqest from wp
发现可能是CDN服务商或者说是防火墙拦截的问题,因为CDN自带了安全拦截功能。
因此我将CDN暂时关闭后再测试,发现正常可以获取爬虫地图。
Then I turn off the CDN (there is a WAF too) and turn on. The crawler worked.
但是也不能将CDN一直关闭啊,所以第二次测试,将litespeed IP地址列表添加到CDN服务商的白名单后,爬虫地图可以正常创建、正常开始扫描创建缓存。
附上litespeed ip 列表
- Text: https://www.quic.cloud/ips?ln
- Trusted IPs: https://www.quic.cloud/ips?trusted
- JSON: https://www.quic.cloud/ips?json
- HTML: https://www.quic.cloud/ips
有用,感谢😀