我的網絡主機是Heroku,它不允許文件保存到本地文件系統。因此,我正在使用Carrierwave將我的文件存儲到Amazon S3上。我應該緩存載波網址嗎?
在控制檯中,我注意到當我這樣做:
Photo.last.attachment.url
它返回:
=> "https://foobar.s3.amazonaws.com/uploads/users/1/photos/7/foo.jpg"
正如預期的那樣。但是,控制檯中的這個過程(返回值)需要2-3秒。我的猜測是它試圖訪問S3。甚至最糟糕的是,當我加載包含多張照片的網頁時,加載需要很長時間。
有人提到,因爲我通過S3遠程存儲我的文件,我應該緩存「Photo.last.attachment.url」的結果。
這意味着,在我的數據庫,我需要有兩列:
:附件和:attachment_url
:附件將在Carrierwave上傳對象和:attachment_url將鏈接到S3直接文件。
這是我應該做的嗎?有更好的選擇嗎?
感謝指出這個錯誤,並高興寶石的開發者設法解決這個問題。非常感激! – 2011-04-26 12:31:48
儘管在這種情況下最好不要緩存,但說URL創建便宜是錯誤的。在複雜的URL場景(顯示數據層次結構)中,URL生成可能很昂貴,因此建議進行緩存。 – 2011-06-01 10:14:18
+1爲線索。發生這種事時我錯過了。我可能會堅持使用緩存,但很高興知道你不再需要(或者面對頁面上的每個url查詢s3)。 – numbers1311407 2011-08-22 20:30:11