一個(gè)關(guān)于解決“域名未備案”的方案
時(shí)間:2023-02-05 16:52:01 | 來源:建站知識(shí)
時(shí)間:2023-02-05 16:52:01 來源:建站知識(shí)
我們第一個(gè)項(xiàng)目面向的是企業(yè)用戶,所以其中有個(gè)功能就是給企業(yè)做官網(wǎng)。這些用戶雖然是獨(dú)立的用戶,但是平臺(tái)提供了他們交互功能,也就是說,這些用戶在我們平臺(tái)上的數(shù)據(jù)也是有關(guān)聯(lián)的。簡(jiǎn)單的說就是,這些眾多企業(yè)用戶的數(shù)據(jù)不能獨(dú)立開。
我們給企業(yè)的官網(wǎng)當(dāng)然是模板化的,客戶只要在后臺(tái)點(diǎn)擊幾下,稍作配置就可以生成它的官網(wǎng)。默認(rèn)情況下,我們分配給客戶一個(gè)子域名。雖然企業(yè)官網(wǎng)基本上沒有什么人會(huì)看,但是客戶百分百要求綁定頂級(jí)域名。這時(shí)候中國特色的備案難題就出現(xiàn)了。
購買域名簡(jiǎn)單,但是備案就較為麻煩。開始我們認(rèn)為,這些客戶都是正規(guī)客戶,備個(gè)案應(yīng)該也沒啥。于是我們提供了管理后臺(tái),只要用戶備案完成(當(dāng)然我們會(huì)協(xié)助)后,填寫好備案信息,提交我們審核后就ok了。但是真實(shí)操作后,發(fā)現(xiàn)實(shí)在是太繁瑣了。大部分客戶并不關(guān)心備案,也不想了解備案,我們溝通也十分麻煩。于是我們就想必須得提供不用備案的方式。
很直接能想到的當(dāng)然就是把服務(wù)器放到國外嘍。但是考慮到原來有備案的用戶、國內(nèi)訪問速度等問題,直接把數(shù)據(jù)放國外是不行的,所以最簡(jiǎn)單的方法就是建立一個(gè)國外代理。我的做法是,用戶提交他購買的域名,然后我會(huì)給他一個(gè)cname地址,實(shí)際指向?yàn)橐慌_(tái)國外服務(wù)器。而國外服務(wù)器上的代理(實(shí)際為Nginx)針對(duì)每一個(gè)域名,都轉(zhuǎn)發(fā)到對(duì)應(yīng)的平臺(tái)子域名。這樣的好處是,我們的代碼幾乎不用改。
不過沒過多久,客戶就投訴了,說網(wǎng)站老是打不開,要么就很慢。原因很快就找到,因?yàn)閲夥?wù)器到國內(nèi)服務(wù)器之間的網(wǎng)絡(luò)不是很穩(wěn)定,有時(shí)候并非高峰期都不穩(wěn)定,而且疑似有一定的周期性。但是國內(nèi)網(wǎng)絡(luò)訪問那臺(tái)國外服務(wù)器卻異常穩(wěn)定??傊莻€(gè)玄學(xué)問題,原因估計(jì)是眾所周知又不太好談?wù)摰哪莻€(gè)。怎么辦呢?
問題的關(guān)鍵是國外服務(wù)器訪問國內(nèi)服務(wù)器的網(wǎng)絡(luò)不穩(wěn)定,所以只要把這一層去掉就好了。好在我們項(xiàng)目做了前后端分離,稍加修改,我把前端代碼放到了國外的服務(wù)器,而數(shù)據(jù)調(diào)用直接用跨域的方式,后端只需要加一些支持跨域的頭即可。這么一來,問題基本解決了。
不過后來用戶還是覺得慢,實(shí)際上是真的一點(diǎn)都不滿。但是用戶是爹,怎么辦呢,改唄。因?yàn)閿?shù)據(jù)請(qǐng)求實(shí)際上已經(jīng)走了指向國內(nèi)的域名,所謂的慢,主要在于用戶第一次請(qǐng)求前端頁面時(shí)較大的js、css文件,這種時(shí)候就只能上CDN了。改成了如下圖所示。
用戶第一步請(qǐng)求國外服務(wù)器拿到很小的index.html,上面只引用了CDN地址(放到阿里云的CDN上了),第二步就是加載CDN上的文件,然后第三步訪問數(shù)據(jù)。到這里,我已經(jīng)想不出還能怎么優(yōu)化了。
微信號(hào):sunspot90
http://weixin.qq.com/r/qUUIEBPEVU4qrVdz9xC7 (二維碼自動(dòng)識(shí)別)