wordpress文章采集软件(插件优化wordpress的分类和标签有什么区别?-八维教育)

优采云 发布时间: 2021-12-30 05:13

  wordpress文章采集软件(插件优化wordpress的分类和标签有什么区别?-八维教育)

  一般来说,对于百万文章级别的网站,首页应该是展示很多分类文章的页面。但是因为WP在初始化的时候会根据url里面的query查询数据库中的一些文章,所以首页是按照时间倒序查询的,所以当不需要最新的文章的时候,可以用hook去掉这个查询的一部分。

  文章页面优化

  看文章页面,好像没有什么耗时查询,基本都是id查询内容,索引用的,但是有翻页问题,有翻页功能可以过滤next和next同类别的文章。,本次查询的sql语句如下

  mysql> SELECT p.ID FROM wp_posts AS p

 

INNER JOIN wp_term_relationships AS tr ON p.ID = tr.object_id INNER JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE p.post_date > '2017-07-04 09:57:50' AND p.post_type = 'post' AND tt.taxonomy = 'category' AND tt.term_id IN (4) AND p.post_status = 'publish' ORDER BY p.post_date ASC LIMIT 1;

  使用解释来查看

  mysql> explain SELECT p.ID FROM wp_posts AS p INNER JOIN wp_term_relationships AS tr ON p.ID = tr.object_id INNER JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE p.post_date > '2017-07-04 09:57:50' AND p.post_type = 'post' AND tt.taxonomy = 'category' AND tt.term_id IN (4) AND p.post_status = 'publish' ORDER BY p.post_date ASC LIMIT 1\G

*************************** 1. row ***************************

id: 1

select_type: SIMPLE

table: tt

type: const

possible_keys: PRIMARY,term_id_taxonomy,taxonomy

key: term_id_taxonomy

key_len: 106

ref: const,const

rows: 1

Extra: Using temporary; Using filesort

*************************** 2. row ***************************

id: 1

select_type: SIMPLE

table: tr

type: ref

possible_keys: PRIMARY,term_taxonomy_id

key: term_taxonomy_id

key_len: 8

ref: const

rows: 5576

Extra:

*************************** 3. row ***************************

id: 1

select_type: SIMPLE

table: p

type: eq_ref

possible_keys: PRIMARY,type_status_date

key: PRIMARY

key_len: 8

ref: aikanwen.tr.object_id

rows: 1

Extra: Using where

3 rows in set (0.19 sec)

  看起来像一个灾难站点,这种查询随着分类的增加会变得极其缓慢,因为有时分类和标签可能会达到几万和几十万!

  分类优化

  和首页一样,只查询分类中的最新文章,甚至是预先生成的静态页面。

  插件优化

  wordpress最常用的插件可能是wp_postviews,但是对于拥有数百万篇文章的wordpress来说,这个插件可能就是一场灾难(如果用它的排行榜的话)。

  此排名将使用如下查询

  SELECT wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1 AND (

wp_postmeta.meta_key = 'views'

) AND wp_posts.post_type IN ('post', 'page', 'attachment') AND (wp_posts.post_status = 'publish' OR wp_posts.post_author = 1 AND wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value+0 DESC LIMIT 0, 10;

  这种查询也是一场灾难。对于WP来说,wp_post_meta表中没有meta_key和meta_value的索引,索引根本不能用于排序,所以只能使用filesort,需要全表扫描。你可以看看解释。

  mysql> explain SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1 AND ( wp_postmeta.meta_key = 'views' ) AND wp_posts.post_type IN ('post', 'page', 'attachment') AND (wp_posts.post_status = 'publish' OR wp_posts.post_author = 1 AND wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value+0 DESC LIMIT 0, 10 \G;

*************************** 1. row ***************************

id: 1

select_type: SIMPLE

table: wp_postmeta

type: ALL

possible_keys: post_id,meta_key

key: NULL

key_len: NULL

ref: NULL

rows: 67053

Extra: Using where; Using temporary; Using filesort

*************************** 2. row ***************************

id: 1

select_type: SIMPLE

table: wp_posts

type: eq_ref

possible_keys: PRIMARY,type_status_date,post_author

key: PRIMARY

key_len: 8

ref: aikanwen.wp_postmeta.post_id

rows: 1

Extra: Using where

2 rows in set (0.17 sec)

  这种排序一次基本上是一场灾难。别说几百万了,十万条条蜘蛛都能干掉他们。

  事实上,当文章达到百万时,最好不要使用涉及数据库读写的插件。粗心大意将是一场灾难。

  后台优化

  后台页面打开时,会查询当前作者的所有文章以及各个状态的文章数。这会扫描整个表,别说是一百万篇文章,连二十万篇文章都会被卡住。

  最好的办法就是去掉这些查询,但是去掉这些查询会使后台显示异常,所以只能用缓存来存储这些号码,所以后台速度会很快。虽然会有呈现不及时的问题,但这已经不是文章量的主要问题了。

  全站缓存

  这是最重要的一步。再多的优化也只能保证你的百万文章网站可以正常打开,但是如果访问的人太多,网站还是会卡住,甚至服务器宕机。这时候就必须使用全站缓存。看了市面上所有的缓存插件,只有一个符合要求——imwpcache。

  imwpcache 支持永不过期的缓存,并且支持使用 sqlite 作为缓存,比使用文件缓存更好。文件缓存太散了,几万条还行。当达到一百万时,清理这些缓存简直就是一场灾难。

  总结

  经过这些优化,支撑百万篇文章基本不成问题。对于普通用户来说,这样做可能会比较困难,尤其是主题。现在市场上的主题基本上不考虑这么大量的文章。一旦文章量上来,网站基本就瘫痪了。所以最好的策略是使用缓存插件。当然,如果你有动手能力,你也可以尝试摆脱这些资源。查询,虽然可能会丢失一些功能,但是可以支持这么多文章来弥补这些损失。

  欣赏

  

  微信欣赏

  

  支付宝升值

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线