有电商的地方就有渠道,而我作为一个渠道商可以从中获利中间差价。极客时间给广大码农提供了非常优质的关于互联网技术的内容,其中价格也很公道。
于是山月今天心血来潮做了一个返现平台,方便大家从中购买,并且省了中间差价:「你从平台购买可以加我微信返现中间差价」,这样你可以以更廉价的方式买一个极客时间的专栏。
今天就谈谈做这个平台的感受及技术栈吧
❝效果如下所示: geek.shanyue.tech
❞
技术栈的考虑
关于技术的实现上有三大块: 爬虫、开发、部署。
关于技术的诉求有: 快速部署 (CICD)、网络延迟小 (国内网络)、SEO 友好
本来的设想是: next.js
、serverless
与 github actions
。但是其中两大块就出了问题:
next.js
: 更好的 SEO,但是更复杂的部署,因为它会起一个 server (其实后来想想也还好)serverless
: 使用腾讯云的serverless
部署,然而我的域名在腾讯云上没有备案,放弃
最终的技术栈是 gatsby
、vercel
,算是满足了快速部署及SEO友好的问题,就差国内网络了。不过既然用到了 vercel
,以后也会考虑切回它同家的 next.js
。当然,以后的技术栈也可能是这样
next.js
+ 个人服务器部署: 更好的 SEO,部署估计会差强人意gatsby
+alioss
+cdn
: 前期工作会很多,特别是配 cdn 和 httpsnext.js
+tencent serverless
: 需要花20天在腾讯云备案
哦对,还有爬虫,可以使用我最近写的一个新库 github.com/shfshanyue/… 中的 map
来控制上百个请求的并发度
const { map, sleep } = require('@shanyue/promise-utils')
const items = await map(courses, async course => {
const sku = course.column_sku
const intro = await getIntro(sku)
await sleep(100)
return intro
}, {
concurrency: 3
})
复制代码
关于感想
今天从写爬虫到完成部署花了半天时间,其中爬虫半个小时、React一个小时、CSS三四个小时、部署半个小时。想一想前端的活真是又苦有多啊。
在写爬虫时还发现了有意思的状态码:451(UnavailableFor Legal Reasons),代表因法律问题导致网站不可访问。如果你也有兴趣,你可以试试以下请求:
curl curl -vvv 'https://time.geekbang.org/serv/v1/my/data' \
-X 'POST' \
--compressed
复制代码
关注我
❝本文收录于 GitHub 山月行博客: shfshanyue/blog,内含我在实际工作中碰到的问题、关于业务的思考及在全栈方向上的学习
❞
欢迎关注公众号【全栈成长之路】,定时推送 Node 原创及全栈成长文章
本文使用 mdnice 排版