1234567891011121314151617181920212223242526272829303132333435363738 |
- package cache
- import (
- bm "go-common/library/net/http/blademaster"
- "go-common/library/net/http/blademaster/middleware/cache/store"
- )
- // Cache is the abstract struct for any cache impl
- type Cache struct {
- store store.Store
- }
- // Filter is used to check is cache required for every request
- type Filter func(*bm.Context) bool
- // Policy is used to abstract different cache policy
- type Policy interface {
- Key(*bm.Context) string
- Handler(store.Store) bm.HandlerFunc
- }
- // New will create a new Cache struct
- func New(store store.Store) *Cache {
- c := &Cache{
- store: store,
- }
- return c
- }
- // Cache is used to mark path as customized cache policy
- func (c *Cache) Cache(policy Policy, filter Filter) bm.HandlerFunc {
- return func(ctx *bm.Context) {
- if filter != nil && !filter(ctx) {
- return
- }
- policy.Handler(c.store)(ctx)
- }
- }
|