提示,本文暂时对百度收录有不确定性。(google/bing等收录成功,并能正常自定义title,meta,content)

单页应用在于seo上有较大局限

  • 异步加载的数据
  • 异步加载的组件

实现原理

  • scrapy-splash:基于docker的无头浏览器,类似phantomjs(16年已经不再更新了),同时提供api可以获取网页内容(可以把他作为一个没有界面的浏览器,会按照正常浏览器的顺序打开网页加载依赖,发送请求,渲染界面)
  • nginx或其他中间件中判断当前访问的请求头为baiduspider/googlebot之类的搜索引擎头,利用proxy_pass将请求转至自己写的node服务或者响应的服务
  • 我们的node服务可以执行get请求向scrapy-splash获取经nginx转向得到的页面整体,将这个页面由node返回给搜索引擎,这里还可以补充诸如301等跳转的功能,自定义强度高

实现步骤

  • 1.下载docker安装~splash,参考文章最后的安装链接
  • 2.执行splash,值得注意的是对于单页应用需要关闭私有模式https://splash-cn-doc.readthedocs.io/zh_CN/latest/faq.html#how-do-i-disable-private-mode
        docker run -d -p 8050:8050 --memory=4.5G --restart=always scrapinghub/splash:3.1 --disable-private-mode --maxrss 4000-d后台运行 --memory最高占用内存为4.5G --restart崩溃重启 --disable-private-mode 用于处理单页应用的私有模式 --maxrss 内存缓冲
    
  • 3.开启完毕之后你可以尝试一下,检测是否能渲染百度的界面
    • http://127.0.0.1:8050/render.html?url=http://www.baidu.com
  • 4.至为关键的一步nginx配置
        upstream spider_server {server localhost:3000;}server {listen       80;server_name  www.test.com;# 当UA里面含有Baiduspider,或者相关的spider的时候,流量Nginx以反向代理的形式,将流量传递给spider_server,文件相关不需要处理set $prerender 0;if ($http_user_agent ~* "baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|     W3C_Validator") {set $prerender 1;}if ($args ~ "_escaped_fragment_") {set $prerender 1;}if ($uri ~* "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|svg|eot)") {set $prerender 0;}if ($prerender = 1) {proxy_pass  http://spider_server;}root /Users/dist; # 自己的dist目录try_files $uri $uri/ @router;   # 这个是history模式需要的index index.html index.html;}
    • 4.1 如何检测这个nginx配置有没错呢,自己拿postman设置个请求头为baiduspider发给自己的80看看能否转到3000端口呗~
  • 5.node服务配置
    • 这一步相对简单,主要考虑缓存与301,这样下一次搜索引擎获取页面时的相对速度就能提升
    memory-cache控制缓存释放,在首次访问时采用cache.get(req.originalUrl)对当前的链接及对应数据进行缓存在下次访问时即可弹出cache.put(req.originalUrl,result.data)
    if (无效页面) {res.redirect(301,'www.xx.com')}
    • 我们可以采用pm2对该应用进行管理(负载均衡及挂机重启)
        pm2 start xxx --max_memory_restart 99999M
    
  • 6.究极重要,超级有效的是在做完以上步骤之后最好为你的网站生成一个全网的sitemap!并提交到谷歌searchconsole百度站长!谷歌生效时间估计在3天内,百度。。。我至今3个月过去还不行(评分下降/海外地址太卡/目前方案不兼容百度/被判断作弊等)。但幸运的是我司只做海外
    • 相关内容

      • npm install sitemap node-schedule 每晚定时任务生成sitemap,保证新页面及时被google收录
      • pm2 xxxx 挂掉重启
     <url><loc>https://www.xxx.com/sitemap</loc><changefreq>daily</changefreq><priority>0.8</priority>
    </url>
    

参考文献

  • www.deboy.cn/prerender-v… (对搜索引擎的请求头判断后基于prerender预渲染完毕后返回给搜索引擎,同时缓存,避免下一次对服务器的访问)
  • ahrefs.com/blog/zh/seo… (深入理解谷歌搜索引擎的优化策略)
  • www.jianshu.com/p/e1520ea19… (splash的基本操作,及安装过程)
  • splash-cn-doc.readthedocs.io/zh_CN/lates… (文档!!重点)

转载于:https://juejin.im/post/5c8f7f236fb9a070ab7e1cae

基于scrapy-splash进行单页应用网站seo处理相关推荐

  1. Angular单页应用网站SEO优化实例详解

    基于个人爱好,使用Angular做了一个双语阅读的网站:蜗牛阅读, 用来闲暇时间看看英文的.可惜传了几本书到现在自己都还没看完~ 网站后台采用的是Netcore+Mysql,前端页面使用的是Angul ...

  2. Bootstrap蓝白色单页个人网站模板

    简介: Bootstrap蓝白色单页个人网站模板 网盘下载地址: http://kekewl.net/Fxy2c0nMu3a0 图片:

  3. 黑色游戏评测网站模板是一款黑色质感的单页游戏网站模板下载。

    黑色游戏评测网站模板是一款黑色质感的单页游戏网站模板下载.不仅仅是首页,二级页面,三级页面,登陆,购物车等,页面齐全 功能齐全  js+css+html (img,字体均有),前端html纯静态页面! ...

  4. 营销型单页企业网站的力量

    单页营销网站(http://www.uqc.com.cn)站能够象一个最精明的销售员一样,对每一个客户都能重点说明了你的产品优势.可以引导他.刺激他去购买你的产品.传播快速.销售力强.转化率高!是一个 ...

  5. 【笔记】《Bootstrap实战》——第6章 单页营销网站

    文章目录 一.概况 二.初始文件 三.了解页面内容 四.调整导航条 五.定制高清图 六.美化功能列表 七.装饰用户评论区 1.定位及美化说明 2.调整说明元素的位置 3.添加 Bootstrap 的网 ...

  6. 【Linux】快速搭建一个基于Vue的大型单页应用

    文章目录 一.npm的安装 二.cnpm的安装 四.Vue的安装 五.快速搭建大型单页应用 六.运行截图 开发环境:Ubuntu 20.0.4 一.npm的安装 sudo apt install np ...

  7. 单页营销网站关键词keyword和描述description写法

    随着网络的发展,单页营销竞价模式是越来越多人的首选了,单纯的靠竞价付费点击还是很贵的,对于初入此行的新手小菜鸟来说,相当的不划算,极有可能因为大量的投入见不到汇报而选择妥协放弃,做单页营销需要设计好精 ...

  8. 美丽和创意的单页产品组合网站

    资产组合是网络业务中的一种生活方式,我们都知道它是杰出的. 突出如何? 设计师所知, 第一印象最好是一种魅力,因为它能带来最佳效果. 理想作品集的另一个原因是,它保存了设计师的出色作品档案. 当设计师 ...

  9. 基于jQuery/zepto的单页应用(SPA)搭建方案

    这里介绍一个基于jquery或zepto的单页面应用方案,遵循尽可能简单的原则,使大家一目了然,只需配置一个路由,之后完全按照jq日常写法即可完成.可做学习使用,也可修改后用于一些业务逻辑简单的spa ...

  10. 基于scrapy+mongodb的智联招聘网站信息爬取

    本篇内容主要记录博主本人爬取智联招聘网站信息的过程!! 环境:python 3.6.5 pycharm JetBrains PyCharm Community Edition 2018.1 x64 M ...

最新文章

  1. webpack-dev-server 和webapck --watch的区别
  2. VB.net版机房收费系统——结账功能实现(调错与优化)
  3. Postfix的bcc邮件备份
  4. Android之系统自带的文字外观设置
  5. ScottGu之博客翻译-LINQ to SQL第三部分,查询数据库 (Part 3 - Querying our Database)
  6. “天昌”的挽歌——逝去的背影(一)
  7. StringBuilder-C#字符串对象
  8. (一)python3 只需3小时带你轻松入门—— 编程尝试
  9. 截取全部数值字符并将其转化为数值类型
  10. 让MDK5开发51单片机
  11. 在线生成android ios icon,一键生成Android/Android-HD/IOS 多尺寸ICON
  12. 吉林大学操作系统上机随笔《实验二》
  13. 《第一本Docker书》 读书笔记
  14. CCIE理论-第十二篇-IPV6-NDP协议
  15. 《机器学习算法竞赛实战》整理 | 八、实战案例:Elo Merchant Category Recommendation
  16. 在沙箱中IE不能上网的解决方法
  17. 我们真的需要会议耳机吗?
  18. KenLM语言模型工具
  19. 用DOCKER安装及使用SSCHA
  20. 单相半波可控整流电路仿真设计(任务书+lunwen+MATLAB仿真源文件)

热门文章

  1. 计算机网络/操作系统
  2. (转)mysql中InnoDB表为什么要建议用自增列做主键
  3. javascript小实例,阻止浏览器默认行为,真的能阻止吗?支持IE和标准浏览器的阻止默认行为的方法...
  4. 01-源代码管理工具的介绍
  5. URAL 1031 Railway Tickets
  6. 简单搞一下 Oracle 存储过程测试!
  7. LINUX 导出文件夹到本地
  8. 查询性能优化 in and union
  9. 漏洞扫描产品评测打分项
  10. (转)2006年100款最佳安全工具谱