• 缓存清除
    • 删除一个特定URL
    • 通过name删除
    • 通过host删除
    • 通过path删除
    • 通过正则删除

    缓存清除

    There are several ways to purge cache by making HTTP PURGE requests to the manager uri defined by uri.

    You can define customized http method using purge-method MYPURGE other than the default PURGE in case you need to forward PURGE to backend servers.

    删除一个特定URL

    curl -XPURGE https://127.0.0.1/imgs/test.jpg

    生成key GET.scheme.host.uri, 并删除那个key。

    默认key 包含Host, 如果缓存时用了http://example.com/test 而在localhost删除是需要Host header:

    curl -XPURGE -H "Host: example.com" http://127.0.0.1/test

    通过name删除

    可以通过带上name header来 PURGE

    headers

    headervaluedescription
    namenuster rule NAMEcaches belong to rule ${NAME} will be purged
    proxy NAMEcaches belong to proxy ${NAME}
    *all caches

    Examples

    1. # 删除所有缓存
    2. curl -X PURGE -H "name: *" http://127.0.0.1/nuster/cache
    3. # 删除backend applb的所有缓存
    4. curl -X PURGE -H "name: app1b" http://127.0.0.1/nuster/cache
    5. # 删除所有rule r1生成的缓存
    6. curl -X PURGE -H "name: r1" http://127.0.0.1/nuster/cache

    通过host删除

    通过带上x-hostheader来删除所有属于这个host的缓存。

    headers

    headervaluedescription
    x-hostHOSTthe ${HOST}

    Examples

    1. curl -X PURGE -H "x-host: 127.0.0.1:8080" http://127.0.0.1/nuster/cache

    通过path删除

    默认情况下,query部分也包含在key中,所以相同的path不同的query会产生不同的缓存。

    比如nuster rule imgs if { path_beg /imgs/ }, 然后请求

    1. curl https://127.0.0.1/imgs/test.jpg?w=120&h=120
    2. curl https://127.0.0.1/imgs/test.jpg?w=180&h=180

    会生成两个缓存,因为query不一样。

    如果要删除这些缓存,可以

    如果知道所有的query,那么可以一个一个删除

    1. curl -XPURGE https://127.0.0.1/imgs/test.jpg?w=120&h=120
    2. curl -XPURGE https://127.0.0.1/imgs/test.jpg?w=180&h=180

    大多数情况下不知道所有的query

    如果query部分不重要,则可以从key里面删除query

    定义nuster rule imgs key method.scheme.host.path if { path_beg /imgs }, 这样的话只会生成一个缓存,那么就可以不用query删除缓存

    curl -XPURGE https://127.0.0.1/imgs/test.jpg

    大多数情况需要query

    通过rule name删除

    curl -X PURGE -H "name: imgs" http://127.0.0.1/nuster/cache

    但是如果rule被定义成了 nuster rule static if { path_beg /imgs/ /css/ },则无法只删除imgs

    因此,可以通过path删除

    headers

    headervaluedescription
    pathPATHcaches with ${PATH} will be purged
    x-hostHOSTand host is ${HOST}

    Examples

    1. # 删除所有path是/imgs/test.jpg的缓存
    2. curl -X PURGE -H "path: /imgs/test.jpg" http://127.0.0.1/nuster/cache
    3. # 删除所有path是/imgs/test.jpg 并且host是127.0.0.1:8080的缓存
    4. curl -X PURGE -H "path: /imgs/test.jpg" -H "x-host: 127.0.0.1:8080" http://127.0.0.1/nuster/cache

    通过正则删除

    也可以通过正则删除,所有匹配正则的缓存将被删除。

    headers

    headervaluedescription
    regexREGEXcaches which path match with ${REGEX} will be purged
    x-hostHOSTand host is ${HOST}

    Examples

    1. # 删除所有 /imgs 开头 .jpg结尾的缓存
    2. curl -X PURGE -H "regex: ^/imgs/.*\.jpg$" http://127.0.0.1/nuster/cache
    3. #delete all caches which path starts with /imgs and ends with .jpg and belongs to 127.0.0.1:8080
    4. curl -X PURGE -H "regex: ^/imgs/.*\.jpg$" -H "127.0.0.1:8080" http://127.0.0.1/nuster/cache

    PURGE 注意事项

    • 开启访问控制

    • 如果有多个header,按照name, path & host, path, regex & host, regex, host的顺序处理

    curl -XPURGE -H "name: rule1" -H "path: /imgs/a.jpg": purge by name

    • 如果有重复的header,处理第一个

    curl -XPURGE -H "name: rule1" -H "name: rule2": purge by rule1

    • regex 不是 glob

    比如 /imgs下的.jpg文件是^/imgs/..jpg$ 而不是 /imgs/.jpg

    • 通过rule name或proxy name删除缓存时,需要注意这两种方法只在当前进程有效。如果重启了进程则无法通过这两种方法删除缓存文件,因为rule name信息和proxy name信息并没有保存在缓存文件中。

    • 只有disk load结束后才能通过host or path or regex 来删除缓存文件。是否已经load结束可以查看stats URL。