- 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>
複製代碼