我有一個基本應用程序,用戶可以在其中上傳一堆HTML文件(index.html,mypage.html)和一堆資產(myimage.jpg,myscript.js),並訪問他們自己的網址,如www.mysite.com/username/index.html。從動態內容中爲Cloudfront提供HTML和資產
但是,我的網站爲上傳的HTML添加了一堆東西:添加註釋,書籤等的能力所有這些都是通過JS注入的。
在我的Rails應用程序,現在我加載從S3控制器用戶上傳的內容,並與一幫JS的沿在我看來,將其輸出:
def show
# load HTML from S3
# strip out everything between body tags and put in @body var
# render view that outputs @body on a page with a bunch of JS
end
然而,這是超緩慢的,因爲:
- 我不趁着CDN緩存用戶上傳的文件
- 我不會把任何客戶端上的HTTP調用。在看到任何內容之前,客戶端正在等待服務器加載來自S3的內容。
我想做些什麼的請求如下
- Rails應用程序返回一個空的HTML頁面JS
- 的JS加載從的Cloudfront HTML文件(利用緩存)
- JS注入的HTML頁面上,與註釋,書籤一起等
我認爲這將是偉大的,但我卡上的文件版本。爲了利用緩存,我想設置很長的TTL並利用文件驗證。但是,我不想運行所有用戶上傳的HTML並將/myimage.jpg中的所有資產標記替換爲/myimage-VERSION.jpg,而且我不想要像www.mysite.com/這樣的漫長網址。用戶名/索引-VERSION.html
我想知道是否有聰明的方法來做到這一點?基本上從Cloudfront獲取HTML,從我的Rails應用程序注入HTML,並利用版本化文件,同時保持良好的URL和原始HTML文件不變。
或者我寧願去在控制器端使用memcached?
任何想法?
謝謝。我決定在控制器中使用memcached,但這是一個很好的下一步。 – Ronze