2015-11-05 75 views
1

我有一個rest-api,我將使用一些基本的模板語言來呈現html。我想知道是否有任何好的平臺或服務用於預渲染HTML文件並靜態地進行服務。爲了性能和可伸縮性。從REST-api和模板預渲染靜態網站?

我需要預先渲染頁面,像每24小時一樣,並且還應該可以告訴系統以某種方式重新呈現特定頁面。我對大多數開源語言感到滿意,節點是最受歡迎的。

+0

所有的HTML頁面都是交叉鏈接的嗎?換句話說,是否可以通過以下超鏈接加載「home」index.html頁面並抓取整個網站? –

+0

是的,但我也會提供一個網站地圖。 – Himmators

回答

0

在我看來,最直接的方法是使用兩層:渲染服務器和緩存服務器。當緩存服務器啓動時,它將抓取渲染服務器上的每個URL並將預渲染的HTMLS文件存儲到其本地目錄中。爲了簡單起見,您可以鏡像「目錄結構」並使資源路徑相同。換句話說,對於像這樣的渲染服務器上的每個網址:

http://render.xyz/path/to/resource 

創建的緩存服務器上的目錄結構/path/to,把一個文件resource在裏面。

您的最終用戶不需要知道這個架構。他們向緩存服務器發出如下請求:

http://cache.xyz/path/to/resource 

緩存服務器向他們提供他們正在查找的結果。

有很多方法可以告訴緩存服務器刷新(重新生成)頁面。您可以添加一個「隱藏」目錄,我們稱之爲.cache-command,並用它來處理刷新請求。例如,告訴緩存服務器刷新的資源,你可以使用一個URL是這樣的:

http://cache.xyz/.cache-command/refresh/path/to/resource 

當緩存服務器收到請求時,它會刷新資源。

這種方法的優點之一是您的緩存服務器可以完全獨立於渲染服務器。它們可以用不同的語言編寫,運行在不同的硬件上,或者它們可以是同一個nodejs應用程序的一部分。無論什麼最適合你。