我正在寻找如何处理以下问题的方法:
想象一下,您修改资源,然后导致更新其他资源。
E.g。你发出一个PUT,比如#!/bin/bash
compressor() {
filepath="$1"
process="${filepath%.*}"
output="/Users/leftright/Desktop/Output/${process##*/}_PROCESSING/"
filename="${filepath##*/}"
moving="${output}""${filepath##*/}"
cleanname="${filename%.*}"
final= "${output}""${cleanname}".mp4
completed="/Users/leftright/Desktop/Output/${process##*/}_COMPLETED/${cleanname}.mp4"
mkdir -m 777 "$output";
mv "$filepath" "$moving";
/Applications/Compressor.app/Contents/MacOS/Compressor -computergroup "This Computer" -jobpath "$output""$filename" -settingpath /Users/leftright/Documents/CONVERTHQTEST.cmprstng -locationpath "$final";
while true; do
if lsof "$final" > /dev/null; then
sleep 1
else
mv "$final" "$completed"
fi
done
}
export -f compressor
fswatch -0 -v --event Created /Users/leftright/Desktop/Watch | xargs -0 -n1 -I filepath bash -c 'compressor "filepath"'
,它根据定义改变给定用户的所有其他订单的状态。可能有UI客户端显示订单表,他们应该知道不仅表中的单个项目已更新,而且最终还是其他项目。
现在,有没有任何标准的方式告知客户这种情况?
到目前为止,我只能想到发回/api/orders/1234
HTTP状态代码来通知客户端他应该刷新状态,因为不只是一件事情发生了变化。
答案 0 :(得分:1)
有多种解决方案。
no-store
)max-age
,因此客户端必须始终重新验证这些资源。在这种情况下,您可能必须实现ETag
和条件GET
,但它在服务器上比选项1更容易。如果你真的想要"通知"可能是多个客户的变化,然后听起来你需要选项3。
但是,正确配置的缓存通常足够好。例如,您可以将尚未执行的订单标记为未缓存(max-age = 0),但是一旦执行,您可能会将其标记为无限期缓存,因为它不能再更改。