首先,我必須提到緩存的一些基本知識。如果你想在一個內存中緩存一個對象,那麼對象應該是可序列化的,因爲它必須通過網絡傳輸。因此,如果要緩存Image Magic對象,則必須將其轉換爲內存流,然後在讀取它時再次將內存流轉換爲Image Magic對象。在多於一臺服務器的內存中緩存圖像
但是,如果您要使用使用堆內存的MemoryCache,則可以緩存每個沒有可序列化的對象。
現在我的情況:我有兩臺AWS服務器,我們的網站有16個負載均衡器。所以我們在兩個不同的網站上有16個相同應用程序的實例。我有超過2000張在S3上的照片。目前,我正在閱讀它們並作爲內存流,然後將它們轉換爲Image magic,並將其與用戶圖片結合起來,並向最終用戶顯示組合圖像。爲了提高性能,我必須緩存圖像魔術圖像並從緩存中讀取它們,這會消除將內存流轉換爲圖像魔術的時間,但如果我使用Memorycache,則會有16個隔離的應用程序池,因此很快內存就會滿了,它不會有效,因爲負載均衡器將在兩臺服務器之間分配請求。所以如果第一個請求到達服務器一個而x在那裏被緩存,那麼第二個請求到達服務器兩個,然後再一次將x緩存在服務器二中。如果我使用memcache,那麼序列化是問題。
附加信息:Web應用程序在MVC中。
你在哪個地區?你從AWS看過EFS http://docs.aws.amazon.com/efs/latest/ug/whatisefs.html? – JamesKn
看看[這個](https://docs.asp.net/en/latest/performance/caching/distributed.html)頁面的一些靈感。 –
2k圖片多久變化一次,爲什麼不將它們放在本地的盒子裏? – JamesKn