- 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.开启完毕以后你能够尝试一下,检测是否能渲染百度的界面
- 4.至为关键的一步nginx配置
upstream spider_server {
server localhost:3000;
}
server {
listen 80;
server_name www.test.com;
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;
try_files $uri $uri/ @router;
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>
复制代码