Meteor部署和優(yōu)化

Meteor部署和優(yōu)化

這幾天用Meteor + React寫(xiě)了一個(gè)電子商務(wù)網(wǎng)站, 整個(gè)過(guò)程非常迅速. 反倒是上線和上線之后的優(yōu)化用了一些時(shí)間. 在這里記錄一下.

上線

上線用的meteor-up, 只有簡(jiǎn)單幾步:

meteor up配置了我阿里云的服務(wù)器ip和密碼
godaddy上配置了DNS的IP指向阿里云IP
阿里云的安全策略, 配置開(kāi)啟80端口
mup deploy打包docker發(fā)布一氣呵成

優(yōu)化

因?yàn)檫@個(gè)網(wǎng)站一共只有200多個(gè)商品, 所以我沒(méi)有做分頁(yè), 只是在header加了filter. 這樣當(dāng)產(chǎn)品加載完畢后, 整個(gè)網(wǎng)站的使用會(huì)非常流暢. 但是就是這個(gè)加載過(guò)程, 耗時(shí)太長(zhǎng). 所以繼續(xù)優(yōu)化

本地緩存

用localforage緩存所有的商品信息, 這樣當(dāng)用戶主動(dòng)刷新頁(yè)面或進(jìn)入網(wǎng)站時(shí), 先從本地緩存讀取, 然后當(dāng)商品信息從服務(wù)端加載完畢后, 再使用服務(wù)端數(shù)據(jù)重新渲染同時(shí)更新本地緩存.

長(zhǎng)列表優(yōu)化

200多個(gè)產(chǎn)品, 雖然每個(gè)都只有一個(gè)40多k的小圖片, 但是全部加載下來(lái)也比較慢, 而且長(zhǎng)列表也比較消耗資源. 首先嘗試了React Lazyload的庫(kù), 效果還可以. 然后嘗試了react-list庫(kù), 首次加載20個(gè)item, 邊沿還有400px時(shí)觸發(fā)下一個(gè)20個(gè)item的加載, 這樣即使快速滑動(dòng)也感覺(jué)不到卡頓.

CDN加速

經(jīng)過(guò)以上優(yōu)化后, 第一次加載后, 整個(gè)網(wǎng)站使用非常流暢快速, 但是首次加載依然緩慢. 通過(guò)chrome network查看, meteor的js文件加載解析的速度非常慢(后來(lái)才知道一個(gè)主要原因是我之前的VPS帶寬只有1M), 所以嘗試了CDN加速. 嘗試了七牛, 阿里云和360云加速, 都需要備案. 最后嘗試了CloudFlare, 是國(guó)外的CDN但是號(hào)稱(chēng)和百度有合作, 可以加速?lài)?guó)內(nèi)的訪問(wèn). 要去域名服務(wù)提供商(我的是godaddy), 把nameservers改成CloudFare的.

npm包CDN加速

將react和antd之類(lèi)的靜態(tài)js, 從npm引入的方式, 改成cdn引入, 因?yàn)槲业哪繕?biāo)用戶主要是國(guó)內(nèi), 所以用了bootcdn. 引入這些包需要多調(diào)試幾次, 因?yàn)樗麄冞€可能依賴(lài)其他的包

以下是我的main.html中引入的js

<script src="https://cdn.bootcss.com/lodash.js/4.17.5/lodash.min.js"></script>
<script src="https://cdn.bootcss.com/react/16.3.1/umd/react.production.min.js"></script>
<script src="https://cdn.bootcss.com/react-dom/16.3.1/umd/react-dom.production.min.js"></script>
<script src="https://cdn.bootcss.com/babel-standalone/6.26.0/babel.min.js"></script>
<script src="https://cdn.bootcss.com/react-router/4.2.0/react-router.min.js"></script>
<script src="https://cdn.bootcss.com/moment.js/2.22.0/moment.min.js"></script>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="https://cdn.bootcss.com/antd/3.4.0/antd.min.js"></script>

注意, 比如antd改成這種方式后, 就需要改變引入方式了. 其他momentjs, lodash之類(lèi)的, 直接使用即可. 其實(shí)我覺(jué)得這種方式非常方便, 省著總是import.
import { Button } from 'antd' 改成 const { Button } = antd;

HTTPS

用Meteor up不要太簡(jiǎn)單, 只需要配置proxy block即可.用let's encrypt服務(wù), 直接給個(gè)email地址, 就可以使用它們的ssl證書(shū)了.

只是需要注意阿里云的安全策略需要增加對(duì)https端口443的支持

proxy: {
    domains: 'xx.com',
ssl: {
    letsEncryptEmail: 'xxx@gmail.com',
  }
}

服務(wù)器選擇

之前使用阿里云的海外服務(wù)器, 不需要備案, 但是后來(lái)才發(fā)現(xiàn)帶寬只有1M, 根本不夠用, 加帶寬又很貴. 現(xiàn)在改成了DigitalOcean在san francisco的VPS, 據(jù)說(shuō)在國(guó)內(nèi)訪問(wèn)比較快. 結(jié)果速度提升很多, 一個(gè)月只要5美元. 看到的朋友想試試可以點(diǎn)我的推薦鏈接http://www.digitalocean.com/?refcode=fbc139ecc02f
, 能夠得到10美元的優(yōu)惠券

使用自己的MongoDB服務(wù)器

因?yàn)镸eteor up打包的docker, 不支持從遠(yuǎn)程訪問(wèn). 這樣對(duì)于運(yùn)維來(lái)說(shuō)就很不方便. 所以我決定在相同的服務(wù)器上搭建一個(gè)MongoDB服務(wù)器.
第一步 將 MongoDB Repository 地址加入到y(tǒng)um配置中
sudo vi /etc/yum.repos.d/mongodb-org.repo添加

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

第二步 安裝
sudo yum install mongodb-org
然后啟動(dòng)
sudo systemctl start mongod
常用命令

sudo systemctl start mongod
sudo systemctl reload mongod
sudo systemctl stop mongod
sudo systemctl status mongod
sudo tail /var/log/mongodb/mongod.log 查看日志
`sudo systemctl enable mongod` 啟動(dòng)運(yùn)行

安全設(shè)置

mongo
use admin

db.createUser(
  {
    user: "AdminSammy",
    pwd: "AdminSammy'sSecurePassword",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

然后vi /etc/mongod.conf如下修改

security:
  authorization: "enabled"

重啟數(shù)據(jù)庫(kù)后生效
現(xiàn)在開(kāi)始登錄數(shù)據(jù)庫(kù)就需要用戶名密碼了
mongo -u "AdminSammy" -p "AdminSammy'sSecurePassword" --authenticationDatabase admin
注意現(xiàn)在AdminSammy雖然有admin數(shù)據(jù)庫(kù)的完全訪問(wèn)權(quán)限, 但是并不能用于其他數(shù)據(jù)庫(kù), 還需要
use meteor

db.createUser(
  {
    user: "username",
    pwd: "password",
    roles: ["dbOwner"]
  }
)

這樣就能用username登錄數(shù)據(jù)庫(kù)了

允許遠(yuǎn)程登錄

vi /etc/mongod.conf,

net:
  port: 27017
  bindIp: 0.0.0.0

結(jié)果

經(jīng)過(guò)以上優(yōu)化, 我的電商網(wǎng)站打開(kāi)速度提升不少, 并且得益于Meteor的特性和本地緩存, 在使用過(guò)程中也是速度飛快.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末栅炒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子术羔,更是在濱河造成了極大的恐慌赢赊,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件级历,死亡現(xiàn)場(chǎng)離奇詭異释移,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)寥殖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)玩讳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嚼贡,你說(shuō)我怎么就攤上這事熏纯。” “怎么了粤策?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵樟澜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我叮盘,道長(zhǎng)秩贰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任熊户,我火速辦了婚禮萍膛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嚷堡。我一直安慰自己蝗罗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布蝌戒。 她就那樣靜靜地躺著串塑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪北苟。 梳的紋絲不亂的頭發(fā)上桩匪,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音友鼻,去河邊找鬼傻昙。 笑死闺骚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妆档。 我是一名探鬼主播僻爽,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贾惦!你這毒婦竟也來(lái)了胸梆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤须板,失蹤者是張志新(化名)和其女友劉穎碰镜,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體习瑰,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绪颖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杰刽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菠发。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡王滤,死狀恐怖贺嫂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雁乡,我是刑警寧澤第喳,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站踱稍,受9級(jí)特大地震影響曲饱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜珠月,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一扩淀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啤挎,春花似錦驻谆、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至伙判,卻和暖如春象对,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宴抚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工勒魔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留甫煞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓冠绢,卻偏偏與公主長(zhǎng)得像危虱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子唐全,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容