簡體   English   中英

大部分靜態網站的效果策略

[英]Performance strategy for site that is mostly static

我正在接管Rails 3.2應用程序的開發,並且正在尋找縮短頁面加載時間的最佳方法。 該網站本身更像是一個大型動態網站,而不是實際的Web應用程序(該網站是http://korduroy.tv/ ,一個沖浪生活方式社區網站),並且還有一些小塊的內容因用戶而異,大多數網站對每個人都是相同的體驗。

頁面加載時間相當慢,並且從查看服務器日志來看,似乎是因為每個頁面都加載了如此多的動態內容(例如,大多數頁面正在加載10多個模型中的資源)。 盡管我希望通過實踐來重構自己能做的事,但我仍在尋找一些基本的性能優勢。 知道大多數站點對於每個用戶都是相同的,這是他們一種在服務器上積極緩存內容甚至提供通過某種后台作業生成的靜態內容的方法嗎?

我最初的想法是創建一個使用靜態網站生成器(例如Jekyl之類)的作業,並基本上創建該網站的靜態副本,然后將其提供給CDN。 我的直覺告訴我,這可能不是解決問題的方法,此外,還有一些頁面(例如用戶個人資料頁面)需要動態提供。

任何建議都會很棒。 免責聲明,我來自前端領域,對服務器端優化方面的最佳實踐了解甚少。 謝謝!

從您寫的內容來看,我相信您最大的收獲將是使用內存緩存存儲實現片段緩存。 請參閱http://guides.rubyonrails.org/caching_with_rails.html作為有關Rails緩存的權威指南。

對於某些不依賴用戶的內容(例如首頁),您也許可以使用頁面緩存或操作緩存,但是除非您每天要處理數百萬個請求,否則我不會確保這是必要的。

我注意到,雖然javascript和css似乎是根據rails資產管道進行編譯的,但是圖像缺少sha1散列,該散列允許瀏覽器對資源進行積極的緩存(因為您不必擔心內容的更改,因為它們更改圖像時獲取新的哈希值)。 這里的關鍵是啟用資產管道,確保您在部署過程中編譯資產( rake assets:precompile ),並使用image_tagasset_path幫助器(或image-url sass幫助器)。 刷新頁面時,還要確保nginx對瀏覽器的響應是代碼304(未修改)。 這不會影響rails服務器上的負載(除非同時在同一服務器上運行nginx和rails),但是會減少平均頁面加載時間。

您可以研究更高級的技術,例如緩存sql查詢或優化這些查詢,但這可能導致復雜性增加,從而使維護代碼庫變得更加困難。 首先嘗試視圖緩存,看看是否可以使加載時間達到可接受的水平。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM