快速問題。我正在爲藝術家構建一個投資組合應用程序,目前有9個不同類型的項目(展覽,新聞,新聞,文本,攝影等)。作爲一名視覺藝術家,他希望他的網站能夠代表他的視覺。問:數據庫調用的Rails最佳實踐
背景:
編輯:信息從控制器最初加載,而不是從一個API調用。後來我將它改爲API調用,因爲我擔心控制器的9個調用太多了。
這意味着該網站是圖形和信息沉重。載入所有信息僅用於導航是15 MB(這是在需要時縮小圖像並通過tinypng運行它們之後)。我將所有的信息放到不同的佈局視圖中,只有在需要保持加載時間和抵消時纔會呈現,這有助於加快速度。但是這個設置無論哪種方式導致在每個頁面加載9個不同的數據庫調用。
我將後端重建爲API端點,因此只在需要時才從數據庫中提取信息。這雖然稍微增加了信息的加載時間,但如果這樣的話只有一秒多。我不會爲此感到困擾,但藝術家可能是。
實際問題
所以我一直在想,在過去的幾天裏,是9數據庫調用太多的一次,它會如何影響可擴展性? Postgres數據庫以供參考。正常的負載,我無法想象有太多的用戶會在任何時間查看網站,所以我不會擔心它。但是,當他舉辦展覽會時,有100-500人同時使用該網站,那900-4500數據庫會調用每個網頁加載。或者通過API路線,人們在找到他們想要的東西之前只能進行1或2個電話。我只是想按照行業最佳做法來處理這種情況,這似乎是問這個問題的好時機。
此外,目前它將託管在heroku上,並且想知道哪種方式(一次或API路由)對於處理postgres連接會更好,因爲免費層(這將足夠95%的時間)具有限制20個連接。儘管有幾個月他有一場演出,但我們可以將它提升到下一個級別的60個連線。
第一次加載頁面時,每個API調用需要多長時間?對我來說九個看起來不是很多,但是聽起來每個電話都可能下載相當多的數據? – quicklikerabbit
@quicklikerabbit所以,我添加了一個編輯,它沒有清楚。原來的9個調用來自應用程序控制器,它不是一個API調用。現在頁面需要1.19-1.63秒才能加載(在主屏幕上開始加載圖像之前)。所以9個電話現在都完成了。對於API版本,dom在<1秒內加載,並且API調用最多需要200毫秒才能加載(無節流),但長達96毫秒。但隨後圖像將開始加載* – user2303016
聽起來像您將從緩存圖像和使用CDN中受益。除非你開始收到嚴重的n + 1數據庫調用問題,否則postgresql將成爲你係統中性能最高的部分。 –