问题标签 [cache-invalidation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
10513 浏览

python - 如何在 Flask-Restful 中使用 Flask-Cache

如何在 Flask-Restful 中使用 Flask-Cache @cache.cached() 装饰器?例如,我有一个从 Resource 继承的类 Foo,而 Foo 有 get、post、put 和 delete 方法。

如何在 之后使缓存的结果无效POST

0 投票
3 回答
3723 浏览

c# - 使用 CloudFront 的无效路径在 C# 中创建失效

我正在尝试使 C#/.NET 中的 CloudFront 对象无效并获取以下异常:

您的请求包含一个或多个无效的失效路径。

我的功能:

传递给函数的数组包含一个 Url,如下所示:

该图像存在于 S3 存储桶中,并在 CloudFront URL 中加载到浏览器中。

我究竟做错了什么?

0 投票
1 回答
1178 浏览

amazon-ec2 - 使多个实例上的清漆缓存无效

我们在 AWS 上运行我们的 Magento 商店,并且我们在 ELB 后面设置了自动缩放设置。在任何时候,我们至少有 2 个 Web 服务器在运行。每个 Web 服务器实例在其前面都有自己的 Varnish Cache 服务器来处理传入的请求。

现在,问题是一旦我们更改了一些静态内容,如 CSS、图像等,我们必须通过 SSH 连接到每个前端 EC2 实例并禁止 Varnish 缓存的对象。这真的很麻烦,因为我们首先必须从 AWS 控制台手动获取实例的 IP,然后通过 SSH 进入它们,如果我们随时拥有超过 2-3 台服务器,这会花费大量时间并且效率不高。

我研究了由 Phoenix Media 安装 PageCache 扩展,但他们模块的问题是我们仍然必须在我们事先不知道的配置中手动输入 varnish 实例的静态 IP 列表。这在我们的案例中不起作用,因为自动缩放服务器来来去去。

有没有一种方法可以一次为所有正在运行的前端服务器设置缓存失效?我在默认 VCL 文件中添加了所需的代码,它允许从同一子网中的任何实例中清除/禁止。对于所有管理任务,我们都有一个专用的 EC2,我计划使用它来向所有前端服务器发出缓存失效请求。

我在想,也许我可以编写一个 shell 脚本并使用 AWS API 获取所有前端实例的 IP 列表,然后向所有这些实例发出禁令命令。这行得通吗?如何设置它?

此外,是否可以采取措施自动使在从存储库中提取最新代码期间更改的所有文件的缓存失效?

解决此问题的最有效方法是什么?

0 投票
1 回答
191 浏览

c# - 使用 VaryByCustom 使缓存无效

我想使用 VaryByCustom 属性使缓存无效。以下代码用于缓存设置。

0 投票
1 回答
333 浏览

varnish - 使大量 Varnish 对象无效的最佳方法?

我正在开发一个支持用户和组的 API 网关服务器。

我有一个类似于以下的 API 端点。

基本上,它是在问“这个用户 1 可以访问‘用户’吗?”。

我想在 Varnish 中缓存“/authorization/users/1?resource=users”。

权限可以设置为用户级别或组级别。每个用户至少属于一个组。

用户级缓存失效很容易,因为我只需要将 PURGE 请求发送到单个 URL。

当涉及到组时,它很复杂。一个组可以有超过 50000 个用户。如何使这些用户无效?

查看https://www.varnish-software.com/blog/advanced-cache-invalidation-strategies,使用X-Article-ID可能是一个很好的解决方案。我担心的是..它如何处理大量的对象?会不会有很大的 CPU 使用率?它处理 50000 个对象的速度有多快?

有没有更好的方法?

0 投票
0 回答
784 浏览

c# - C# Redis Cache:如何检查一个特定的键值是否被更改,然后无效并从数据层(即原始源)设置 nw 值

寻找实现:

1) 检查键值是否改变。

2)如果是,则评估密钥。

3)从数据层(即原始源)设置具有新值的键

0 投票
1 回答
261 浏览

amazon-web-services - 跨服务器的缓存失效

我有 6 个 Web 服务器,由于缓存不一致而给我带来了问题。我正在考虑构建一个缓存失效服务,以便有一个主题,所有服务器都可以在该主题上发布消息以使对象失效。我正在考虑使用 Amazon SNS 来制作主题。

现在让服务器接收失效消息,我对以下内容感到困惑:

  1. 我是否应该使用 SQS 队列让服务器接收消息。
  2. 我是否应该使用 HTTP 端点,然后在该路由上构建一个使缓存无效的 api。您能否强调这两种方法或任何其他可能使我受益的方法的优缺点。
0 投票
1 回答
2045 浏览

x86 - 为什么 CLFLUSH 存在于 x86 中?

我最近了解了行锤攻击。为了执行这种攻击,程序员需要为特定数量的地址刷新 CPU 的完整缓存层次结构。

我的问题是:为什么在 x86 中需要CLFLUSH?如果所有 L* 缓存都透明地运行(即不需要显式缓存失效),那么使用该指令的原因是什么?除此之外:CPU 不是可以自由推测内存访问模式,从而完全忽略指令吗?

0 投票
1 回答
822 浏览

amazon-web-services - CloudFront 的失效请求计数

我使用*通配符清除所有内容,现在希望检查发出的无效请求总数。我怎么知道?

0 投票
1 回答
289 浏览

c# - 数据库层缓存、触发器和失效

我有一个 DAL,用于将大量时间序列测量值保存到 RDBMS 数据库(MS SQL Server)中。还有一个网络应用程序连接到该数据库并在线显示趋势(通常绘制几个月的数据图表,例如,各种数量和物联网设备的 5 分钟最小/最大/平均聚合)。

由于数据量大,我想将聚合结果缓存到一个单独的表中,如果我可以有一个额外的内存缓存层,那也很酷。但是,设备经常发送带有较旧时间戳的历史数据,这意味着缓存通常需要失效,并且有两个应用程序访问这些数据(插入/更新并偶尔读取数据的服务,以及读取数据的 Web 应用程序)数据)。

我已经研究了几个选项,例如 SQL 触发器,或者只是手动使表无效,但我不确定如何将缓存失效正确地传播到 Web 应用程序。

有没有办法以某种方式检测我的网络应用程序中的 SQL 事件并使缓存无效?或者有一个单独的内存缓存进程,也可以失效?或者我是否应该创建我自己的第三个服务,它将作为所有数据库操作的代理,提供数据的内存缓存(这肯定看起来有点矫枉过正)?