feat(订阅式软件提供): 提供者重新声明定制页即失效该产品资源缓存
入口 URL 通常不含内容版本号,24h TTL 内主服务不会回源,重建后的产物要等过期才生效;改为 SetGroupRemotePage 时清空该产品缓存(PurgeRemoteAssets),下次请求立即回源并按 SHA256 只换来真正变化的文件
This commit is contained in:
1 parent
3e642ca119
commit
8d98abe231
1 file changed
+19
@@ -585,11 +585,16 @@ class SubscriptionManager:
|
||||
group.RemoteEntry = entry
|
||||
group.RemoteModule = module_name
|
||||
group.save(update_fields=['RemoteEntry', 'RemoteModule'])
|
||||
# (重新)声明即失效本产品的资源缓存:入口 URL 通常不含内容版本号(如
|
||||
# /venom/remote-entry.js),若不主动清理,主服务在 TTL 内会一直回旧内容;
|
||||
# 清理后下一次请求立即回源,配合 SHA256 只换来真正变化的文件。
|
||||
purged = SubscriptionManager.PurgeRemoteAssets(group.SubscriptionGroupUUID)
|
||||
return {
|
||||
'GroupUUID': _ToStr(group.SubscriptionGroupUUID),
|
||||
'GroupName': group.GroupName,
|
||||
'RemoteEntry': group.RemoteEntry,
|
||||
'RemoteModule': group.RemoteModule,
|
||||
'PurgedAssets': purged,
|
||||
}, None
|
||||
|
||||
# ==================== 远端资源代理与缓存(主服务代子服务器出资源) ====================
|
||||
@@ -699,6 +704,20 @@ class SubscriptionManager:
|
||||
'Changed': changed,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def PurgeRemoteAssets(GroupUUID):
|
||||
"""清空某产品已缓存的远端资源(提供者重新声明定制页 / 手动失效时调用)
|
||||
|
||||
Returns:
|
||||
int: 删除的缓存条数
|
||||
"""
|
||||
group_bytes = _ToBytes(GroupUUID)
|
||||
if group_bytes is None:
|
||||
return 0
|
||||
deleted, _detail = SubscriptionRemoteAsset.objects.filter(
|
||||
SubscriptionGroupUUID=group_bytes).delete()
|
||||
return deleted
|
||||
|
||||
@staticmethod
|
||||
def ListMySubscriptions(UserUUID, CompanyUUID=None):
|
||||
"""我的订阅:当前用户作为订阅成员已订阅的产品(含定制页远端入口)
|
||||
|
||||
Reference in new issue
Block a user