ivx中字体显示_iVX云服务费用优化 · 上篇
本文全文字數:? ?3308
預計閱讀時間:? ?10 分鐘
本文篇幅較長,建議親親能夠完成閱讀,將會學到不少干貨哦~??
本文目錄
一虛擬機
->我們為何關閉了之前的虛擬機服務?
->是否有新的虛擬機計劃?
二流量優化
->靜態流量優化方案
靜態流量:每個案例打開時,產生的流量
->動態流量優化方案
動態流量:從數據庫或者后臺返回的圖片或視頻等資源產生的流量
三常見的“巨”坑
->視頻投票案例常見“巨坑”
->“巨坑”填平建議(強烈)
最近收到了很多同學的抱怨和顧慮,覺得iVX的云服務費用太高了,不可控,希望可以恢復之前的虛擬機服務,讓運維費用完全可控。
我先來回復一下關于虛擬機服務的問題,然后教大家怎樣優化案例的流量費用部分,讀完這篇“秘籍”,大家可能就會覺得控制流量費用完全是可行的了。
一虛擬機
1?為何關閉了虛擬機服務?
平臺的成本不可控
運行一個案例,除了需要計算服務器,還需要mysql數據庫、redis、ES全文搜索數據庫、對象存儲、連接服務器、公共的網關/api服務等等資源,特別是我們用aws高保障可伸縮mysql數據庫,成本非常高。
我們無法將這些服務成本公平的“平攤”給每個計算服務器,因此每個“虛擬機”只是收取了純計算的成本,這個對于平臺來說無法覆蓋成本,因此,我們只能暫時暫停了這個服務;
運維不可控
虛擬機里的后臺代碼是不會自動更新的,因此,當平臺更新了一些新功能,案例重新部署至虛擬機可能會出現問題,需要一個一個去維護更新,這個工作量非常大,如果要重新上線虛擬機,我們需要重新開發一套虛擬機管理系統。
2?是否有新的虛擬機計劃?
這個我們已經在技術上測算過是可行的,但新的虛擬機(或者叫“虛擬系統”更為確切),我們需要將所有的資源,特別是數據庫部分,打包進虛擬資源。
如果用戶購買一整套虛擬資源,其實就是我們幫你維護部署了一整套aws系統。這個系統我們測算過,最低的配置,每個月的硬成本大約是1800+。這個成本,我們認為對于個人用戶來說還是偏高,因此這個方案還在內部討論中。
二 流量優化
接下來,我們來詳細討論一下怎樣在公共平臺的投放上省錢。
由于最近收到很多關于流量扣費的問題,因此在這部分中我主要來講一下流量的優化。
iVX的扣費項目主要是兩項:
👉流量
👉后臺服務器運算
本期我們主要講流量部分的扣費。
iVX的流量扣費,包括兩個部分,一個是靜態流量,一個是動態流量。
靜態流量
我們先來講靜態流量。
靜態流量,即每個案例打開時,產生的流量,其計算方法為:案例靜態大小*打開次數 (這里的打開次數,僅計算正式發布上架地址的打開次數,測試發布的,不計算在內)
所以,
案例靜態大小 = 案例資源大小 + 案例JS包大小
案例的資源大小,我們可以在發布界面中看到:
案例的js包大小,需要發布,系統對代碼進行編譯之后,才能夠知道,因此在未發布時,看不到。
JS包的大小,我們可以通過這個地址來查詢:
https://v4rel.h5sys.cn/api/10328579/nodelookup?nid=xxx
其中,xxx,就是你的案例的nid;
但只要不是特別變態的案例,一個案例的JS包,通常不會超過2-3M,我們可以取2.5M來做一個預估。因此,我們的工作主要是優化素材資源的大小。
舉個例子,
如果我們將整個案例的靜態大小控制在5M,
那,播放1000次的流量成本是:5*1000/1024*0.3=1.46元,這個成本對于一個商業案例來說,基本可以忽略了。播放1w次,也是14.6元。
根據我們的經驗,通常一個營銷類型的活動投放,不太會超過5w次,中小型的,不會超過1w次。這個成本,可以提前和客戶溝通好。
那接下來的問題是,我們怎樣壓縮素材資源:
圖片,盡量小于100K
根據我們的經驗,對于移動端的圖片來說,無論舞臺是375寬還是750寬,一個全屏的背景圖,100k,足夠清晰了。
如果發現不清晰,那可能是這個圖片的編碼格式問題,大家可以試試官方推薦的圖片壓縮工具:tinypng.com。
我這里上傳一個ios的桌面背景圖大家感受一下:
上面這個圖片的大小是53k。即使你覺得不夠清晰,那*2倍的清晰度,在手機上也足夠了。
因此,千萬不要被設計師誤導,設計師們喜歡用盡量高清的圖,因此他們的電腦也都是頂配的專用機器,否則根本都跑不起來他們的項目。
作為開發者,我們一點要把資源優化放在第一位,這不僅僅可以省錢,而且可以大大提高用戶打開案例的速度,提高用戶體驗。
優化字體包
有一個常見的“坑爹”的操作是上傳一個沒有剪裁過的字體包。即在普通文本的字體里,選擇自定義上傳字體:
如果我們上傳的是中文字體包,基本上都是超過1M的,超過10M也不奇怪。
大家可以嘗試上傳一個中文字體包,然后去發布界面看一下,通常,字體包就是排在第一個的資源:
為啥字體包那么大?
因為中文的字體包,要包含所有常見的中文字,盡管你可能只是用了100個,但這個包里,可能包含5000+個字,所以就很坑流量了。
針對這種情況,主要有兩種優化的方法:
使用中文字體組件
中文字體,是服務器動態生成的字體,可能會消耗一點動態的計算和流量,但生成圖片這個計算很有限,對比一個5M+的字體包,會省錢很多;
剪裁字體包
網上有很多剪裁字體包的工具,可以將我們需要的字,從一個大的字體包里“提取”出來。
比如,我們只用了100個字,就可以把這100個字從5000字的字體包里抽取出來,這樣字體包的大小也可以變成之前的50分之一。
針對各種網上的字體包壓縮工具,我還沒有詳細評測過,歡迎大家在論壇評論區推薦~~
但注意,剪裁字體包的方法,只能適用于靜態的文本,如果是用戶輸入的文本,也要支持使用自定義字體,那只能使用中文字體了。
使用動態流量來代替靜態流量
動態流量,即在案例加載完成之后再去加載的資源。
比如,我們有一個很大的視頻,需要在案例里播放。這個時候,如果我們把視頻直接在視頻組件里上傳,那視頻就會作為靜態資源,出現在發布界面的“素材列表”中,所有出現在這個列表中的資源,都會在案例打開的時候加載,計算入靜態流量。
但如果這個視頻,不需要初始化就自動播放,而是需要用戶點擊之后才播放的,那這個時候,我們完全可以上傳視頻并把視頻的url地址記下來,然后在用戶點擊播放的時候,在事件里對視頻組件進行賦值,再讓它加載這個url。
這樣,這個視頻就只有在用戶點擊的時候,才會加載視頻產生流量,而不是在初始化的時候就產生所有視頻的加載流量。
由于并不是每個打開案例的用戶都會點擊視頻(或者點擊所有的視頻),因此,這個方法可以節省掉很多不必要的流量加載。
動態流量
接下來,我們來講一下怎樣優化動態流量。
動態流量,即從數據庫或者后臺返回的圖片或視頻等資源產生的流量。
這些資源,不包含在案例靜態包中,因此,會根據實際的使用情況來計算流量。(注意,中文字體組件,也是一種動態產生的圖片,也會計算在動態流量中,而不是靜態流量)
我們有一個工具可以檢查動態流量
在案例發布地址(不一定需要上架)后面添加URL參數?logsize=1
例,
https://www.ivx.cn/test/cdn?logsize=1
在每次加載動態資源的時候,會在控制臺,把當前新增的動態流量,以及本次打開的所有動態流量顯示出來。
實例鏈接案例中,點擊兩個文本,可以從后臺輸出兩個圖片,我們會在控制臺看到兩個記錄:
01
02
每條記錄包含兩個值,第一個值代表當前總動態流量,第二個值代表當前額外新增的流量。
三?常見“巨”坑
針對動態流量的優化,除了以上提到的盡可能優化素材大小以外,還有一個常見的坑。
這個問題,我這邊近期碰到過3個案例,都是做視頻投票,都產生了巨大的流量。
視頻投票的案例,產生大流量的原因主要有二:
原因之一:用戶自主上傳的視頻很大
用戶自主上傳的視頻很大,動不動就是100M,那這個時候,我們要在列表里顯示這個視頻,就會非常燒錢了。想象一下有20個候選人,每個人上傳了一個100M的視頻……
這個時候,我們可以首先考慮限制視頻的大小或時長。
推薦解決方法
👉請用戶自行壓縮視頻。
👉或者做一個候選人審核的功能。
即不是用戶提交了申請就馬上讓他出現在候選人列表中,而是需要通過審核。在審核的時候,我們完全可以去壓縮一下他的視頻。
👉實在不行,我們可以定時去數據庫里看一下資源,然后手動壓縮視頻之后,替換。
原因之二:在列表里直接顯示視頻
如果在候選人列表里直接顯示視頻,那只要用戶進入候選人列表,視頻就會開始加載,產生流量。
但注意,此時在列表階段,用戶并不會真的去一個一個視頻點開來看。
因此,我們在這個階段,浪費了非常多的資源。
另外,注意數據庫設置分頁輸出,否則,用戶一滑列表,加載一堆視頻,我們就開始燒錢了。
此時,我們要優化候選人列表。
推薦解決方法
👉在列表里設置顯示視頻的封面圖。
iVX的上傳視頻功能,可以直接獲取到封面圖,我們將這個封面圖,存在另一個字段里,在列表里只顯示圖片,那就可以避免巨大的流量消耗了。
👉注意數據庫分頁輸出。
就是每次加載只輸出當前頁面所需要的素材,比如10個,然后當用戶滑到底部的時候,再去加載另外10個,這樣也可以很好的節省動態資源。
以上,就是我們對流量部分的優化總結,歡迎大家在論壇評論區提出更多建議~~
總之,
在發布時查看素材大小,
盡量控制在10M以內,
并通過?logsize=1,
檢查案例的動態資源加載,
學會這些技巧,
相信你也會覺得控制流量費用不是問題了~~
彩蛋
推薦一個字體裁剪工具
https://font-subset.disidu.com/
總結
以上是生活随笔為你收集整理的ivx中字体显示_iVX云服务费用优化 · 上篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: https访问http加载不出图片_前端
- 下一篇: html的组织顺序是什么,css如何组织