2014-10-29 47 views
0

Hello在我的Web應用程序中,我維護HashMap中用戶授權的URL列表,並比較請求的URL並根據授權進行恢復。此映射具有角色作爲鍵和URL作爲List形式的值。我的問題是我應該擁有這張地圖的位置?何處維護應用程序中的緩存

在會話中:它可能有數百個URL並且會增加會話的負擔。

在應用程序加載緩存中:URL可能會隨時修改,然後我需要通過再次啓動服務器來重新同步它。

在定期更新的高速緩存中:應用程序級定期更新的高速緩存。

我需要一個可以達到目的的優化方法,幫助我一樣。

回答

0

我更喜歡把它作爲一個單獨的類,並有一個線程定期更新它。線程將保持緩存的狀態..當你獲得緩存的第一個實例時,該線程將啓動

public class CacheSingleton { 
    private static CacheSingleton instance = null; 
    private HashMap<String,Role> authMap; 
    protected CacheSingleton() { 
     // Exists only to defeat instantiation. 
     // Start the thread to maintain Your map 
    } 
    public static CacheSingleton getInstance() { 
     if(instance == null) { 
     instance = new CacheSingleton(); 
     } 
     return instance; 
    } 
    // Add your cache logic here 
    // Like getRole,checkURL() ... etc 

} 

無論在你的代碼,你可以得到的緩存數據

CacheSingleton.getInstance().yourMethod();