具体分析:SEO | 影响网站排名的重要因素!

优采云 发布时间: 2022-09-29 19:14

  具体分析:SEO | 影响网站排名的重要因素!

  这个社会,炫目的东西很多,但真正派上用场的,不一定是看起来很酷的东西。许多方法简单而朴实无华,但它们解决了很多问题。在互联网上,尤其是跨境电商领域,流量红利已经见顶,如何在狼群中分一杯羹,是你必须思考的问题。

  今天,很多人告诉我如何吸引站外流量,如何社交。其实我很想问,你们对网站的优化怎么样?SEO做得如何?

  有多少人在找流量,问题是你的产品这么差,不优化你的产品,怎么能得到流量?

  想到这里,突然发现很多人似乎都停止了Care SEO,都在谈论社交引流和社区玩,但要知道,SEO仍然是互联网流量分配最重要的入口之一!

  今天我们来聊聊SEO。

  SEO优化,优化什么?

  很多人说是关键字,网站的结构,内链&外链的搭建,TDK,H1~H6,网站的排版。

  诚然,这里的许多要素都非常关键,但我要说的是:

  在SEO的优化中,请忘掉所有的花招,用最大的时间和精力去解决用户的需求!!!

  做SEO,就是在和谷歌打交道,一定要站在谷歌的角度看问题!作为搜索引擎,Google 关心什么?他为什么把你的 网站 排在高位?

  不只是因为你的网站能最好的解决用户的需求,最有效率的帮助用户,然后在此基础上做降低搜索引擎爬取难度的工作!

  也就是做一个网站应该有的,正确的思路是

  第一:解决用户需求

  第二:优化网站事项

  如何解决用户的需求?

  对于一个网站来说,解决用户需求,就应该为用户提供优质的内容!

  请记住,内容可以泛指,例如使用的产品、文本、视频、图像、网站。

  小北,还是很抽象的,有什么案例吗?

  是的,我会给你两个网址。打开后,仔细分析一下,看看他们的网站为什么这么牛逼(一个是销售网站,一个是博客),在这个过程中,你会感受到什么是优质内容是!

  

  希望大家仔细分析这两个网站!

  如何优化网站

  由于要优化的东西太多了网站,这里我就举几个重点来优化!

  第一:关键词

  显然,关键字在搜索引擎如何找到您方面起着重要作用。不要堆叠关键字,尤其是在元描述部分。很多人做了大量的关键字堆砌,这是一个很大的错误。

  在TDK上,字符越多越好。例如,标题应为 76 个字符,元描述应为 156 个字符。

  您可以使用此工具检查文本是否超出要求:

  另外,我在做SEO的时候,喜欢玩长尾关键词,先占据这部分流量,慢慢做次要关键词....

  放关键词的几个点一般比较集中,比如:title、mete、H1、B、alt、url

  二:链接

  链接分为内部链接和外部链接。

  内部链接:

  我认为 网站 链接尽可能短(不要问我为什么,阅读大量案例和数据)

  另外:网站必须是伪静态的(陈词滥调)

  还有一个很容易被忽视。我之前写过一篇文章,网站中页面的权限会影响网站的权限。搜索引擎会使用 网站 中的 URL 来判断 网站 中网页的等级,并赋予不同的权重,所以 网站 内页的 URL 应该尽量放权重较高的网址!

  外部链接:

  单纯追求链接数影响不大。相反,越难的链接,对于网站和页面权重的提升还是很重要的。

  第三:原创 & 更新频率

  

  停止使用 伪原创

  停止使用 伪原创!

  停止使用 伪原创!

  伪原创 的 文章 没有未来,如果你先做这么久!

  特别是,你必须记住一件事。您必须拥有高质量的内容。没有高质量的内容,即使是 原创 也毫无意义!

  更新频率不用多说,我宁愿保证更新频率更低+高质量的原创,也不愿保证没有墨水的高频原创。

  需要注意的是,第二点和第三点是相关的。

  优质的内容会自动带来强大的外链!如果内容好,很多人会主动连接你的博客/文章。

  大量发布链接已过时。

  第四:Landing Page的创建

  无论我做 网站 还是博客,我都必须首先从登录页面构建它。首先,我会让这个页面“完美”(至少我会很满意),然后我会出去推广它。

  在我看来,一个网站页面不可能有强大的权重,所以需要建立一个“标杆”,以强大的页面作为驱动力去辐射其他页面,进而带动整个地点。

  一个好的页面可以获得巨大的外部关注和链接。这时候,其实是一个源源不断的入口!

  第五:综合发挥

  交通多样化。希望大家在做SEO的时候可以通过其他渠道合作,比如SEO、SNSN。

  这几年我用这套战术,以SEO为基础,以社交为渠道,介绍用户,过滤沉淀有效用户,然后让用户驱动我网站的SEO,传播/分享我该网站,从而形成一个循环,效果是巨大的!(可以看三遍吗~)

  当然,这需要你有一定的基础和比较强的流量运营能力。

  我的公众号很久以前就写过文章这种玩法,有兴趣的可以自己挖。

  解决方案:《文章推荐系统》系列之收集用户行为数据

  在上一篇文章中,我们完成了业务数据的同步。推荐系统中的另一个重要数据是用户行为数据。可以说,用户行为数据是推荐系统的基石。,所以接下来,我们需要将用户的行为数据同步到推荐系统数据库中。

  在文章推荐系统中,用户行为包括曝光、点击、停留、采集、分享等,所以我们这里定义的用户行为数据的字段包括:发生时间(actionTime)、停留时间(readTime)、通道ID(channelId)、事件名称(action)、用户ID(userId)、文章 ID(articleId)、算法ID(algorithmCombine),json格式,如下图

  # 曝光的参数<br />{"actionTime":"2019-04-10 18:15:35","readTime":"","channelId":0,"param":{"action": "exposure", "userId": "2", "articleId": "[18577, 14299]", "algorithmCombine": "C2"}}<br /><br /># 对文章触发行为的参数<br />{"actionTime":"2019-04-10 18:15:36","readTime":"","channelId":18,"param":{"action": "click", "userId": "2", "articleId": "18577", "algorithmCombine": "C2"}}<br />{"actionTime":"2019-04-10 18:15:38","readTime":"1621","channelId":18,"param":{"action": "read", "userId": "2", "articleId": "18577", "algorithmCombine": "C2"}}<br />{"actionTime":"2019-04-10 18:15:39","readTime":"","channelId":18,"param":{"action": "click", "userId": "1", "articleId": "14299", "algorithmCombine": "C2"}}<br />{"actionTime":"2019-04-10 18:15:39","readTime":"","channelId":18,"param":{"action": "click", "userId": "2", "articleId": "14299", "algorithmCombine": "C2"}}<br />{"actionTime":"2019-04-10 18:15:41","readTime":"914","channelId":18,"param":{"action": "read", "userId": "2", "articleId": "14299", "algorithmCombine": "C2"}}<br />{"actionTime":"2019-04-10 18:15:47","readTime":"7256","channelId":18,"param":{"action": "read", "userId": "1", "articleId": "14299", "algorithmCombine": "C2"}}<br />

  用户离线行为数据

  由于用户行为数据规模巨大,通常每天更新一次,用于离线计算。首先在Hive中创建用户行为数据库profile和用户行为表user_action,按日期设置分区,匹配json格式

  -- 创建用户行为数据库<br />create database if not exists profile comment "use action" location '/user/hive/warehouse/profile.db/';<br />-- 创建用户行为信息表<br />create table user_action<br />(<br /> actionTime STRING comment "user actions time",<br /> readTime STRING comment "user reading time",<br /> channelId INT comment "article channel id",<br /> param map comment "action parameter"<br />)<br /> COMMENT "user primitive action"<br /> PARTITIONED BY (dt STRING) # 按照日期分区<br /> ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' # 匹配json格式<br /> LOCATION '/user/hive/warehouse/profile.db/user_action';<br />

  通常用户行为数据存储在应用服务器的日志文件中。我们可以使用 Flume 监控应用服务器上的日志文件,并将用户行为数据采集到 Hive 的 user_action 表对应的 HDFS 目录中。Flume配置如下

  a1.sources = s1<br />a1.sinks = k1<br />a1.channels = c1<br /><br />a1.sources.s1.channels= c1<br />a1.sources.s1.type = exec<br />a1.sources.s1.command = tail -F /root/logs/userClick.log<br />a1.sources.s1.interceptors=i1 i2<br />a1.sources.s1.interceptors.i1.type=regex_filter<br />a1.sources.s1.interceptors.i1.regex=\\{.*\\}<br />a1.sources.s1.interceptors.i2.type=timestamp<br /><br /># c1<br />a1.channels.c1.type=memory<br />a1.channels.c1.capacity=30000<br />a1.channels.c1.transactionCapacity=1000<br /><br /># k1<br />a1.sinks.k1.type=hdfs<br />a1.sinks.k1.channel=c1<br />a1.sinks.k1.hdfs.path=hdfs://192.168.19.137:9000/user/hive/warehouse/profile.db/user_action/%Y-%m-%d<br />a1.sinks.k1.hdfs.useLocalTimeStamp = true<br />a1.sinks.k1.hdfs.fileType=DataStream<br />a1.sinks.k1.hdfs.writeFormat=Text<br />a1.sinks.k1.hdfs.rollInterval=0<br />a1.sinks.k1.hdfs.rollSize=10240<br />a1.sinks.k1.hdfs.rollCount=0<br />a1.sinks.k1.hdfs.idleTimeout=60<br />

  编写 Flume 启动脚本 collect_click.sh

  #!/usr/bin/env bash<br /><br />export JAVA_HOME=/root/bigdata/jdk<br />export HADOOP_HOME=/root/bigdata/hadoop<br />export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin<br /><br />/root/bigdata/flume/bin/flume-ng agent -c /root/bigdata/flume/conf -f /root/bigdata/flume/conf/collect_click.conf -Dflume.root.logger=INFO,console -name a1<br />

  Flume自动生成目录后,需要手动关联Hive分区才能加载到数据中

  

  alter table user_action add partition (dt='2019-11-11') location "/user/hive/warehouse/profile.db/user_action/2011-11-11/"<br />

  用户实时行为数据

  为了提高推荐的实时性,我们还需要采集用户的实时行为数据进行在线计算。这里使用 Flume 将日志采集到 Kafka 中,在线计算任务可以从 Kafka 中读取实时的用户行为数据。首先,启动zookeeper并将其作为守护进程运行

  /root/bigdata/kafka/bin/zookeeper-server-start.sh -daemon /root/bigdata/kafka/config/zookeeper.properties<br />

  打开卡夫卡

  /root/bigdata/kafka/bin/kafka-server-start.sh /root/bigdata/kafka/config/server.properties<br /><br /># 开启消息生产者<br />/root/bigdata/kafka/bin/kafka-console-producer.sh --broker-list 192.168.19.19092 --sync --topic click-trace<br /># 开启消费者<br />/root/bigdata/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.19.137:9092 --topic click-trace<br />

  修改Flume的日志采集配置文件,添加c2和k2,采集日志数据到Kafka

  a1.sources = s1<br />a1.sinks = k1 k2<br />a1.channels = c1 c2<br /><br />a1.sources.s1.channels= c1 c2<br />a1.sources.s1.type = exec<br />a1.sources.s1.command = tail -F /root/logs/userClick.log<br />a1.sources.s1.interceptors=i1 i2<br />a1.sources.s1.interceptors.i1.type=regex_filter<br />a1.sources.s1.interceptors.i1.regex=\\{.*\\}<br />a1.sources.s1.interceptors.i2.type=timestamp<br /><br /># c1<br />a1.channels.c1.type=memory<br />a1.channels.c1.capacity=30000<br />a1.channels.c1.transactionCapacity=1000<br /><br /># c2<br />a1.channels.c2.type=memory<br />a1.channels.c2.capacity=30000<br />a1.channels.c2.transactionCapacity=1000<br /><br /># k1<br />a1.sinks.k1.type=hdfs<br />a1.sinks.k1.channel=c1<br />a1.sinks.k1.hdfs.path=hdfs://192.168.19.137:9000/user/hive/warehouse/profile.db/user_action/%Y-%m-%d<br />a1.sinks.k1.hdfs.useLocalTimeStamp = true<br />a1.sinks.k1.hdfs.fileType=DataStream<br />a1.sinks.k1.hdfs.writeFormat=Text<br />a1.sinks.k1.hdfs.rollInterval=0<br />a1.sinks.k1.hdfs.rollSize=10240<br />a1.sinks.k1.hdfs.rollCount=0<br />a1.sinks.k1.hdfs.idleTimeout=60<br /><br /># k2<br />a1.sinks.k2.channel=c2<br />a1.sinks.k2.type=org.apache.flume.supervisorctl<br />我们可以利用supervisorctl来管理supervisor。sink.kafka.KafkaSink<br />a1.sinks.k2.kafka.bootstrap.servers=192.168.19.137:9092<br />a1.sinks.k2.kafka.topic=click-trace<br />a1.sinks.k2.kafka.batchSize=20<br />a1.sinks.k2.kafka.producer.requiredAcks=1<br />

  编写Kafka启动脚本start_kafka.sh

  #!/usr/bin/env bash<br /># 启动zookeeper<br />/root/bigdata/kafka/bin/zookeeper-server-start.sh -daemon /root/bigdata/kafka/config/zookeeper.properties<br /># 启动kafka<br />/root/bigdata/kafka/bin/kafka-server-start.sh /root/bigdata/kafka/config/server.properties<br /># 增加topic<br />/root/bigdata/kafka/bin/kafka-topics.sh --zookeeper 192.168.19.137:2181 --create --replication-factor 1 --topic click-trace --partitions 1<br />

  流程管理

  我们在这里使用 Supervisor 进行流程管理。当进程出现异常时,可以自动重启。Flume流程配置如下

  

  [program:collect-click]<br />command=/bin/bash /root/toutiao_project/scripts/collect_click.sh<br />user=root<br />autorestart=true<br />redirect_stderr=true<br />stdout_logfile=/root/logs/collect.log<br />loglevel=info<br />stopsignal=KILL<br />stopasgroup=true<br />killasgroup=true<br />

  Kafka进程配置如下

  [program:kafka]<br />command=/bin/bash /root/toutiao_project/scripts/start_kafka.sh<br />user=root<br />autorestart=true<br />redirect_stderr=true<br />stdout_logfile=/root/logs/kafka.log<br />loglevel=info<br />stopsignal=KILL<br />stopasgroup=true<br />killasgroup=true<br />

  启动主管

  supervisord -c /etc/supervisord.conf<br />

  启动Kafka消费者并将日志数据写入应用服务器日志文件,Kafka消费者可以采集实时行为数据

  # 启动Kafka消费者<br />/root/bigdata/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.19.137:9092 --topic click-trace<br /><br /># 写入日志数据<br />echo {\"actionTime\":\"2019-04-10 21:04:39\",\"readTime\":\"\",\"channelId\":18,\"param\":{\"action\": \"click\", \"userId\": \"2\", \"articleId\": \"14299\", \"algorithmCombine\": \"C2\"}} >> userClick.log<br /><br /># 消费者接收到日志数据<br />{"actionTime":"2019-04-10 21:04:39","readTime":"","channelId":18,"param":{"action": "click", "userId": "2", "articleId": "14299", "algorithmCombine": "C2"}}<br />

  supervisor常用命令如下

  supervisorctl<br /><br />> status # 查看程序状态<br />> start apscheduler # 启动apscheduler单一程序<br />> stop toutiao:* # 关闭toutiao组程序<br />> start toutiao:* # 启动toutiao组程序<br />> restart toutiao:* # 重启toutiao组程序<br />> update # 重启配置文件修改过的程序<br />

  参考

  ⬇️⬇️⬇️精彩继续⬇️⬇️⬇️

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线