整套解决方案:搜索引擎优化
优采云 发布时间: 2022-10-24 20:32整套解决方案:搜索引擎优化
外贸网站如何做搜索引擎优化
外贸网站一般针对国际业务进行对外展示和营销,但由于谷歌搜索引擎在中国的访问受限,很多经营外贸的站长网站只知道如何优化谷歌搜索引擎。今天我们来分析一下外贸网站是如何进行搜索引擎优化的。
第一步:目标市场业务分析
1、网站定位分析:分析网站的结构、导航、代码、Robot.txt、404和301设置的具体细节,确保满足后续网站的要求搜索引擎优化。网站网站必填。
2、竞争分析:检查内容关键词在搜索引擎中的竞争难度以及对应的竞争对手网站,以制定有效的SEO优化策略。这里推荐使用 Kwfinder 和 Semrush 等工具。
3.关键词研究:采集与行业和产品相关的利基关键词,研究客户群的搜索意图,保证优化方向的正确性。你能想象如果你是一个购买产品的客户,你会在搜索引擎中输入什么来找到你想要的东西吗?当然,还有很多更好的方法可以做到这一点,例如询问客户或负责客户业务员。
第 2 名:关键词 研究
1、关键词分析:进一步确定初始关键词列表,利用相关关键词工具展开更多相关关键词和长尾关键词。分析关键词的搜索意图、搜索量和竞争难度,为后续页面布局选择合适的关键词。注意不要忽略 关键词 的其他名称、单数和复数形式以及拼写差异和错误。
2.排名评估:清楚了解当前关键词的竞争难度,以便准确评估未来的网站排名。建议您使用 SEMrush 或 Excel 来统计每周排名变化。在 关键词 排名发生变化的同时,我们也可以观察到 网站 流量的提升。
3、关键词排名目标设定:明确制定关键词或网站流量提升目标,后期优化流量漏斗。有人认为这个目标很难设定。没关系。从最简单的开始。比如网站这个月的流量是100IP,那么下个月努力增加到200IP。每一个目标都会使 网站 的优化过程具体而明智。当此步骤重复多次时,您就会清楚地了解 关键词 和 网站 增加流量是否是一个好主意。
第 3 部分:内容优化和提交
1、页面SEO:网站页面内的SEO布局问题是整个SEO优化过程中最重要的环节。好的站内SEO不仅保证了文章的可读性,而且还有合理的关键词布局和内外链接,非常有利于网站在搜索中的排名引擎。让我们来看看在页面搜索引擎优化中需要注意的一些事项。
①TDK的选择
标题:网页的标题代表了网页的核心点,即告诉你网页做了什么。基于 关键词 的标题有助于确定收录 关键词 的页面的主题和优化方向。
描述:由于谷歌算法的变化,元描述对排名没有直接影响,但会直接影响网站的点击率。3% CTR 和 0.3% CTR 之间的差距通常是致命的。
关键词(关键词):关键词的评选力求实现3个目标,定位准确,搜索量大,竞争难度低。
②关键词布局:关键词的整体布局遵循自上而下的原则:
在On-page SEO中,关键词的布局要注意以下几个方面
在title或h标签中,布局核心关键词
核心 关键词 出现在 文章 的前 100 个单词中
确保核心 关键词 在页面上出现 2-3 次
布局长尾关键词关键词
使用粗体或斜体效果
③ 内外部链接的布局:为了增加网站的连接性,内部链接的布局可以让访问者轻松到达网站的其他页面。合理的内链有利于网页SEO排名的提高。建议在 文章 中添加 2-3 个位置。网站中的外链无法将权重传递给网站本身,但优质的外链布局有助于增加谷歌对网站的信任度。
④图片/视频优化:图片上传前必须进行无损压缩,否则会影响网站的加载速度。此外,图片的名称和描述必须与有问题的产品相对应。优化图片的 Alt 标签。视频方面,建议先将视频上传到YouTube等社交平台,再嵌入网站,有助于提高网页加载速度。
2.使用Rich Snippet提高网站CTR:网站的CTR对于网站来说非常重要,所以我们推荐网站安装Rich Snippet相关插件生成Structured数据以增加 网站 的点击率。
3. 为 Google 和 Bing 生成站点地图:让搜索引擎更容易索引您的 网站。创建 XML 和 HTML 版本。Html 版本是一步。通过 Google 和 Bing 网站管理员工具提交站点地图。
4、提交网站给搜索引擎:有时候觉得搜索引擎的收录太慢了,所以我们可以直接提交URL给搜索引擎,这样网页就会被索引由搜索引擎。
此功能可通过 Google 网站管理员工具和必应网站管理员工具获得。
第四:外链建设
“内容为王,外链为王”相信很多SEO人都听过这句话,但随着谷歌熊猫算法的调整,外链对SEO的帮助大减,但距离它还有很长的路要走变得过时了。所以,我们还是要做外链建设。外链的作用有3个:直接吸引流量,提高网页权重和信任度,吸引蜘蛛爬取,提速收录关于外链的种类和外链怎么做。
第 5 部分:监控和维护
1、监控:后期需要监控网站的排名状态和流量状态,保证SEO策略的有效性。当然,还有每个关键词的排名状态和它带来的流量。
2、维护:需要不断的增加和修改关键词和网站内容,不断提高网站在搜索引擎中的排名。这样,网站的流量会持续上升,避免停滞或下降。当然,您需要不时测试 网站 以避免出现意外情况。后期的外链建设也少不了。相关外部链接的不断增长将为网站带来巨大的收益。
解决方法:Dubbo原理解析-监控
在 Dubbo 的发布代码中,自带了一个简单的监控中心实现。对于一般的小企业来说,这个监控中心应该可以满足需求。对于那些业务量大的大公司,一般都有自己的监控中心,功能比较丰富,比如常用的报警短信通知等。本章讲解分析,让读者了解一般的监控中心实现,也让有自己需求的人能够接入监控中心,了解如何整合自己的监控中心实现。先从dubbo自带的监控中心说起。
监控中心
1.监控中心启动,我们先看一下dubbo的properties文件
dubbo.container=log4j,spring,registry,jetty
dubbo.application.name=simple-monitor
dubbo.application.owner=
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.port=7070
dubbo.jetty.port=8080
dubbo.jetty.directory=${user.home}/monitor
dubbo.charts.directory=${dubbo.jetty.directory}/charts
dubbo.statistics.directory=${user.home}/monitor/statistics
消费者的启动注册中心与提供者相比,注册中心多,码头容器启动
它们都是基于dubbo的spi扩展机制。
SpringContainer容器启动是加载classpath*:META-INF/spring/*.xml spring的配置文件
2.SimpleMonitorService
监控中心配置了监控服务的实现SimpleMonitorService,作为一个普通的dubbo服务暴露给注册中心,供服务提供者和服务消费者调用,并将服务提供者和服务消费者的调用数据保存到监控中心。.
监控服务接口定义
公共接口监控服务{
/**
*监控数据采集。
* 1. 支持调用计数:count://host/interface?application=foo&method=foo&provider=10.20.153.11:20880&success=12&failure=2&elapsed=135423423
* 1.1host,application,interface,group,version,method 记录监控源主机、应用程序、接口、方法信息。
* 1.2 如果是消费者发送的数据,添加提供者地址参数,否则添加源消费者地址参数。
* 1.3 成功、失败、自上次采集以来经过的记录,成功调用次数,失败次数,成功调用总时间,平均时间除以总时间成功。
*
*@paramstatistics
*/
voidcollect(URLstatistics);
/**
*监控数据查询。
* 1. 支持按天查询:count://host/interface?application=foo&method=foo&side=provider&view=chart&date=2012-07-03
* 1.1host,application,interface,group,version,method 查询host、application、interface、method的匹配条件,所有缺失的条件都表示,host用0.0.0.0表示。
* 1.2 side=consumer,查询采集的数据的provider的哪一端,默认是两者都查询。
* 1.3 默认为view=summary,返回全天的汇总信息。支持view=chart,即返回全天趋势图图片的URL地址,可以在嵌入其他系统的页面上访问和展示。
* 1.4 date=2012-07-03 指定查询数据的日期,默认为当天。
*
*@paramquery
*@returnstatistics
*/
列表查找(网址查询);
}
注:Lookup在开源过程中可能依赖阿里的系统,没有具体实现。如果需要这个功能,需要根据接口定义自己的实现
MonitorService的dubbo默认实现SimpleMonitorService
远程调用Collect方法后,将数据url(传入的url收录监控需要的数据)存入一个阻塞队列BlockingQueue
启动定时任务将统计日志记录到本地,
字符串文件名 =${user.home}/monitor/statistics
+"/"+ 天
+"/"+statistics.getServiceInterface()
+"/"+statistics.getParameter(METHOD)
+"/"+ 消费者
+"/"+ 提供者
+"/"+ 类型 + "."+ 键
这是文件在本地存储的格式
文件内容如保存时间方法所示,消费耗时
3.使用JFreeeChart从定时任务中绘制图表并保存路径
${user.home}\monitor\charts\date\interfaceName\methodName
生成监控数据
注册中心对外暴露MonitorService服务,调用者是谁,监控中心数据从哪里来。下面我们来看看服务提供者和服务消费方式是如何干预监控中心的。
在服务提供者和消费者的dubbo配置中添加如下配置
通过注册表
或直接连接
在构建服务的调用链时,有如上基于监控的扩展。让我们来看看这堂课。
@Activate(group = {Constants.PROVIDER, Constants.CONSUMER})
//这个过滤器在服务的提供者和服务的消费者的应用程序中被激活,即起作用
公共类 MonitorFilter 实现过滤器 {
私有 MonitorFactory monitorFactory;
公共结果调用(Invokerinvoker,调用调用)抛出 RpcException {
if(invoker.getUrl().hasParameter(Constants.MONITOR_KEY)) {
//由监控中心处理
1.获取invoker的调用上下文
2.记录开始时间戳
3. 并发计数加一
尝试 {
4.调用调用链中的下一步
5.采集通话信息
} 最后 {
6. 将并发计数减一
}
} 别的 {
//没有配置监控中心,直接向下调用
返回调用者.inovke(调用);
}
}
以上第5点的信息采集
1.计算通话时间
2.获取并发数
3.获取服务名
4.获取方法名
5、判断是服务消费者监控还是服务提供者监控
6、从工厂类monitorFactory.getMonitor(*敏*感*词*url)中获取DubboMonitor对象,
构建调用监控中心服务的Url,url中收录监控中心需要的监控信息
monitor.collect(newURL(Constants.COUNT_PROTOCOL,
NetUtils.getLocalHost(),localPort,
服务+“/”+方法,
MonitorService.APPLICATION,应用程序,
MonitorService.INTERFACE,服务,
MonitorService.METHOD,方法,
远程键,远程值,
错误?MonitorService.FAILURE:MonitorService.SUCCESS,“1”,
MonitorService.ELAPSED,String.valueOf(elapsed),
MonitorService.CONCURRENT,String.valueOf(concurrent),
常量.INPUT_KEY,输入,
常量.OUTPUT_KEY,输出));
DubboMonitor 是调用监控中心的服务的封装。之所以不直接调用监控中心,而是通过 DubboMonitor 调用监控中心,是因为监控是一个附加功能,不应该影响主链路,也不应该破坏主链路的新性能。DubboMonitor采集 数据到达后,由任务定时调用监控中心服务,将数据提交给监控中心。
注册容器
监控中心refer引用了注册中心暴露的RegistryService服务,主要用于后面的RegistryContainer。
RegistryContainer主要从注册中心采集服务、分组、版本信息,并注册回调。当注册表数据发生变化时,更新到监控中心。
我们来看看RegistryContainer的start方法流程:
1、通过SpringContainer获取之前初始化的RegistryService,其实就是注册中心的远程代理服务
2.构造订阅注册中心数据的URL,可以看到下面的URL都是订阅服务提供者和服务消费者的服务
subscribeUrl =newURL(Constants.ADMIN_PROTOCOL, NetUtils.getLocalHost(), 0,"",
Constants.INTERFACE_KEY,Constants.ANY_VALUE,//所有服务
Constants.GROUP_KEY,Constants.ANY_VALUE,//所有组
Constants.VERSION_KEY, Constants.ANY_VALUE,//所有版本
Constants.CLASSIFIER_KEY,Constants.ANY_VALUE,//所有类别
Constants.CATEGORY_KEY,Constants.PROVIDERS_CATEGORY +"," + Constants.CONSUMERS_CATEGORY,//服务提供者和服务消费者
Constants.CHECK_KEY,String.valueOf(false));//不检查
3、调用注册服务registry.subscirbe(subscribeUrl,listener)订阅所有数据,NotifyListener在监控中心暴露为回调服务,由注册中心回调
回调接口NotifyListener实现的功能主要是根据服务提供者和服务消费者采集服务提供者或消费者的服务名称、服务url和系统相关信息。同时提供了一系列方法供注册中心调用和查询。
码头集装箱
监控中心通过内置的jetty将采集收到的信息展示给用户。为了不依赖jsp、velocity、freemarker等一些技术编写web应用程序,将html、css、js打印在servlet中。
JettyContainer的start方法启动内置jettyweb容器
将监控中心访问的本地文件目录设置为ResourceFilter,并将该过滤器的访问映射到jetty。ResourceFilter主要读取本地保存到浏览器的JFreeChart绘制的图片。
配置监控中心的前端控制器PageServlet和这个servlet到jetty的访问映射。PageServet之所以称为前端控制器,是为了像其他mvc框架一样分发特定的业务类
PageServet的init初始化方法在web容器启动时加载所有的页面处理器PageHandler,用于根据不同的请求生成不同的页面。前面说过,这里的页面html是用java代码打印出来的。
当PageServet的init方法加载所有PageHandler时,会判断PageHandler上是否有@Menu注解,并将注解后的PageHandler加入到集合中供HomePageHandler使用,生成首页和各个页面的uri。
PageServet的doGet和doPost接收浏览器请求,请求格式为xx.hml,xx是PageHandler扩展的key,找到对应的PageHandler绘制对应的页面返回给浏览器。
@Menu(name = "Home",desc = "Home page.", order = Integer.MIN_VALUE)
//带注释的name和desc属性在页面显示给用户
公共类 HomePageHandler 实现 PageHandler {
公共页面句柄(URL url){
列表>行=新的ArrayList>();
for (PageHandler handler :PageServlet.getInstance().getMenus()) {
String uri =ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(handler);//这个uri其实就是PageHandler扩展配置的key,在页面中用来请求选择特定的handler来绘制//out特定页面
菜单菜单 =handler.getClass().getAnnotation(Menu.class);
列表行 = newArrayList();
row.add("" + menu.name() + "");
row.add(menu.desc());
行。添加(行);
}
return new Page("Home","Menus", new String[]{"Menu Name", "Menu Desc"}, rows);//一个Page实体是一个页面,收录了所有主HomePage的页面内容
}
}
com.alibaba.dubbo.container.page.PageHandler文件中PageHandler的扩展配置
index=com.alibaba.dubbo.container.page.pages.HomePageHandler
providers=com.alibaba.dubbo.monitor.simple.pages.ProvidersPageHandler
消费者=com.alibaba.dubbo.monitor.simple.pages.ConsumersPageHandler
. . . .
下面截图看看dubbo提供了哪些扩展
下面截几张截图可以看到监控中心页面。