惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Latest news
Latest news
T
Troy Hunt's Blog
V
Vulnerabilities – Threatpost
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
V
V2EX
博客园 - 司徒正美
B
Blog RSS Feed
AWS News Blog
AWS News Blog
MyScale Blog
MyScale Blog
Scott Helme
Scott Helme
Cisco Talos Blog
Cisco Talos Blog
Last Week in AI
Last Week in AI
NISL@THU
NISL@THU
博客园 - Franky
P
Proofpoint News Feed
博客园_首页
C
CERT Recently Published Vulnerability Notes
雷峰网
雷峰网
S
Schneier on Security
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
G
GRAHAM CLULEY
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
WordPress大学
WordPress大学
The Hacker News
The Hacker News
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
A
Arctic Wolf
Microsoft Azure Blog
Microsoft Azure Blog
T
The Exploit Database - CXSecurity.com
Engineering at Meta
Engineering at Meta
罗磊的独立博客
T
The Blog of Author Tim Ferriss
D
Darknet – Hacking Tools, Hacker News & Cyber Security
I
Intezer
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
K
Kaspersky official blog
SecWiki News
SecWiki News
云风的 BLOG
云风的 BLOG
美团技术团队
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Security Latest
Security Latest
C
Cyber Attacks, Cyber Crime and Cyber Security
B
Blog
S
Security Affairs

BMPI

构建自己的信息简报 2.0 我的退休计划:把无期变成有期 从情绪化交易到系统化投资 策引2025 实盘大考:当算法跑赢人性 三十五 我的AI投资助手 我的投资之路 BMPI周记008:设止损而勇试错 BMPI周记007:经济下行 BMPI周记006:时光机 BMPI周记005:直播小完结 BMPI周记004:不要做空 BMPI周记003:十年前的今天 BMPI周记002:交易之难 BMPI周记001:开始直播 对交易的思考 AI驱动开发:从Prompt到Product(直播) 策引全球投资组合:A股1号 策引全球投资组合:A股2号 策引全球投资组合:A股3号 策引全球投资组合:A股全球 策引全球投资组合:加密币1号 策引全球投资组合:加密币2号 策引全球投资组合:美股1号 策引全球投资组合:美股2号 策引全球投资组合:美股3号 策引全球投资组合:美股4号 策引全球投资组合:美股全球 全球投资开户完全指南:A股与美股篇 我的2023 全球经济中的隐形巨人 海外银行证券开户薅羊毛小记 我与ChatGPT结对编程的体验 ChatGPT背后的语言模型简史 ChatGPT应用开发小记 我的AI阅读助手 SQLite的文艺复兴 2022亏了多少 # 组合季报(2022Q4) AI降临 构建自己的信息简报 善用GitHub Real-time Web应用开发新体验 我的巨亏经历 # 组合季报(2022Q3) Google软件工程之工具篇 构建自己的杠杆 我的投资助手 Google软件工程之过程篇 Google软件工程之文化篇 交易之难 # 组合季报(2022Q2) 从技术难题中学习 编程语言是如何实现并发的之并发模型篇 疫情与战争 # 组合季报(2022Q1) 编程语言是如何实现并发的之操作系统篇 编程语言是如何实现泛型的 写在第二十五万字 走进 Web3 财富常识 复盘2021 # 组合季报(2021Q4) 分布式系统中的时间 分布式系统下的认证与授权 如何学习一门技术 K8S 云原生应用开发小记 使用 Beancount 管理家庭财务 三周年小记 # 组合月报(202109) 仓位管理是核心 # 组合月报(202108) 云端 IDE 护城河还在但城没了 # 组合月报(202107) 构建高质量的信息输入渠道 最牛指数 # 组合月报(202106) 国际化与本地化 慢慢变富 # 组合月报(202105) 失败驱动开发 加密币挖矿小记 家庭资产配置的阶段 # 组合月报(202104) OKR + GTD + Note => Logseq 我的个人项目技术栈 长期投资之难 # 组合月报(202103) 我的人生管理系统 当别人的股票基金上涨时 # 组合月报(202101) 基于Serverless实现静态博客访问统计功能 构建终身学习体系进行自我提升 我的家庭理财规划 投资的秘密 # 组合月报(202012) 零成本搭建现代博客之优化国内访问速度 我的绘图工具箱 关于银行分期贷款的坑 # 组合月报(202011) 投资交易的心理建设 # 组合月报(202010) 大跌时我们能做什么 # 组合月报(202009) 双均线交易策略 # 组合月报(202008) Serverless应用开发小记 投资理财书籍推荐 # 组合月报(202007) 200万小目标 # 组合月报(202006) 零成本搭建现代博客之加载速度优化篇 零成本搭建现代博客之订阅推送篇 我常用的浏览器插件 零成本搭建现代博客之SEO优化篇 什么是SEO 零成本搭建现代博客之搭建篇 用Markdown可以做什么 什么是互联网广告
优惠券项目小结
马大伟 · 2019-02-20 · via BMPI

大概在半年前我参加了一个国外优惠券聚合平台的项目,项目背景简单介绍下:网站聚合展示很多品牌的最新优惠券,用户可以在里面查看及搜索不同品牌的最新优惠券,优惠券分为两类,用户点击后有展示优惠码的,也有点击后跳转到品牌折扣页的,通过Google相应品牌折扣关键词引流。网站的优惠券来源于两类渠道,一类是Aff网盟平台,我们网站对接了三个平台,包括shareasale、linkshare、CJ。另一类是社交平台,主要是Twitter平台。第一类平台通过接口对接拉取数据自动入库上架至我们网站,人工主要在这几个网盟平台申请各品牌的优惠券offer即可。对于网盟平台的优惠券offer,用户点击优惠券跳转到品牌官网后购买此商品我们有佣金提成,不同商品的提成佣金率不同。第二类如Twitter平台的优惠券没有提成,不过量特别大,可以扩充我们的优惠券数量,也可以提高我们网站的页面数量和Google收录页面。

一开始我们网站只是对接了三个网盟平台,此时网站的第一版本已经上线,优惠券数量大概有三万个有效的,品牌页为三千个,我们网站的设计是以品牌页为聚合的,也就是第一版网站只有大概三千多个页面,为了提高Google的收录页面,我们开始做SEO优化,基本的SEO优化有网站Html优化、Sitemap、Title、Keywords、Description、Meta、品牌索引页面、长尾词建设、外链建设、url优化、站内搜索等。外链建设在短时间内就做到了上万个以上了,长尾词也做到了七八千个,所以页面暴增到了一万二左右,长尾词页面内也做了SEO优化,包括相似长尾词推荐,相似品牌推荐等。当时日志监控观察到Google爬虫每日爬取频率变高,收录也到了两三千,有一些品牌词已经有了排名,一切都在向好的方向发展。这其中有个隐患是我们当时上线时没有预料到的,也为项目以后出现问题埋了一个雷,就是我们刚上线时用的是一个新的普通的域名,但是项目组因为某些原因得到了一个大概有10年历史的老域名,这个老域名自己有一些外链可以带来一些流量,应该是之前做过一些网站导致外链带来的量,本以为这个老域名可以带来不错的收录权重,所以就在上线一周后立即切换成这个老域名了,现在网站已经有两个版本了,一个是老版本新域名,一个是新版本老域名(自带流量),因为项目组人力有限,就主要给这个老域名的网站上加新功能,之前的新域名就没人维护暂时通过robots屏蔽爬虫放置了一段时间。

很快我们发现了问题所在,Google在收录页面的时候一直有问题,先是缓存一直404,然后我们网站加载速度很慢,在google page speed测速里面评分在60分左右,所以我们花了一周时间去给网站提速,加了CDN,优化了网站渲染的代码逻辑,简化前端JS和CSS文件大小,优化图片大小等,然后网站速度得到了提升,加载可以在2秒内完成,服务器响应时间控制在了200ms内,但是Google的缓存页面一直有问题,最后SEO们排查说这是Google的问题,而且Google官方也说这是Google内部服务器的问题,只要索引正常就没问题,当时我们也就没管这个问题。不过始终困扰我们的问题是Google的收录页面一直不稳定,早上是几百个,下午又变成几千个了,而且Google带来的SEO流量一天也徘徊在几十个左右。

项目第二期着重提高Google收录页面,当时SEO们认为是网页相似度太高了,所以我们花了一两周时间去研究是不是我们网站的内容太相似了,所以对于可能相似的页面做了一些随机差异化处理,让网站的某一部分每次刷新都随机,虽然这种方式对爬虫不太优化,但是可以确保网页的相似度变低,我写了一个python的程序去检查我们全站的上万个页面,先用爬虫爬取了两天时间爬取到页面然后自动去渲染截图下来,然后从html里抽取出文本,对文本计算余弦相似度,最后随机筛选出一千个页面,两两比较相似度画对比图,发现全站的相似度并不高,而且竞品的网站的相似度和我们差距也不是很大,因为大家数据都是从网盟平台拿到的,所以数据应该是差不多的。然后Google的缓存终于正常了,不过显示的却是移动端的界面,这其实很奇怪,因为Google有两个版本的bot,一个是移动端,一个是PC端,我们网站会通过UA检测给与不同模板的html代码,只是Google最终给的是移动端的缓存版本,移动端缓存版本显示还不正常,最后排查是前端的一个组件是用了某个Google不兼容的技术导致的,最终把这个问题fix后,又是一周时间去观察,收录还是不正常。

第三期还是解决收录不正常的问题,然后我们把问题聚焦在了内容上,因为内容都是从网盟拉取过来的接口数据,所以差异化和竞品差不多,为了提高网站的内容,我们选择了爬取社交网站的信息来生成优惠券,因为很多品牌会在设交站发布自家品牌的优惠券信息,所以我们调研后确定爬取Twitter的推文,我搭建了一个Twitter的分布式爬虫系统,定时每秒去Twitter里搜索优惠券相关的关键词,然后爬取相关推文入库,然后后台有个python程序每天定时去库里拿到前一天爬取到的推文,经过算法处理后生成了优惠券格式的信息,另外一个脚本任务会自动把这些生成的信息经过去重后发布到我们网站里。加入了Twitter的优惠券后,我们的优惠券数量很快就翻倍了,页面也达到了七八万的规模。因为之前我们分析认为长尾词页面过多了,所以停掉了长尾词页面,外链也开始不断减少,但是此时收录还是不稳定,此时bing的收录页面都上两万了,但是Google的还在两三千徘徊,很不稳定,有时候下午是一万六,早上又变成两千了。和竞品相比,实在是很诡异。

最终我们认为问题大概率出在了域名上,因为不断的排查测试都没有解决问题,就是域名一直没有去测试,因为域名换了后很多工作都白做了,但是我们又想去测试是不是域名导致的问题,所以又把之前的新域名启用了,在之前的新域名做了一个简化版的优惠券系统,用来和老域名这个网站做对比,观察了一段时间后,之前新域名的系统收录也出问题了,SEO们认为是之前我们在发布系统的时候两个域名曾经发生过关联,可能会被Google检测出来,然后这法子就行不通,此时我们又准备去启用一个域名去测试,同时制定了一个建设一个流量站去给优惠券平台导流的计划。不过所有的这一切都没来得及去做,公司最终以项目时间过长为由停掉了开发新功能的计划,只是把网站放着等待收录正常。