我的网站有一个处理程序(实现IHttpHandler
),用于生成动态样式表。它通过从会话中获取HTML颜色代码(基于用户所属的组织)并使用某些代码(DotLess)在不同位置生成具有该颜色集的样式表来实现此目的。
鉴于模板很少会改变,我认为缓存是有序的,但我当然需要使缓存依赖于我从会话中获得的颜色。
是否有基于此值进行输出缓存的简单内置方法?我知道我可以根据查询字符串和其他各种方法来做,但不确定是否可以在这样的会话值上完成。另一种选择当然是创建我自己的缓存代码,但我宁愿不重新发明轮子......
答案 0 :(得分:2)
你可以为输出缓存创建一个缓存键,它将颜色作为键的一部分...“true”输出缓存是在处理程序之前的内核级别完成的,因此在执行时可能很难实现处理程序级别是一种通过请求改变密钥的方法。
为什么不使用静态的,正确的线程安全(通过锁定)字典...其中键是颜色而值是CSS内容?静态对象将一直存在,直到应用程序域终止。您可以在Handler中使用HttpHandler的静态字段成员来进行缓存。然后,压缩所述缓存变得像清除或重新初始化静态字段成员引用一样简单。