问题标签 [caching]

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 投票
28 回答
558040 浏览

javascript - 如何强制客户端刷新 JavaScript 文件?

我们目前处于私人测试阶段,因此仍在进行相当快速的更改,尽管显然随着使用量开始增加,我们将放慢这一过程。话虽如此,我们遇到的一个问题是,在我们推出包含新 JavaScript 文件的更新后,客户端浏览器仍然使用该文件的缓存版本并且他们看不到更新。显然,在支持电话中,我们可以简单地通知他们进行ctrlF5刷新以确保他们从服务器获取最新文件,但最好在此之前处理此问题。

我们目前的想法是简单地将版本号附加到 JavaScript 文件的名称上,然后在进行更改时,增加脚本上的版本并更新所有引用。这绝对可以完成工作,但更新每个版本的引用可能会很麻烦。

因为我确信我们不是第一个处理这个问题的人,所以我想我会把它扔给社区。当您更新代码时,您如何确保客户端更新他们的缓存?如果您使用上述方法,您是否使用了简化更改的流程?

0 投票
3 回答
7042 浏览

c# - 为什么 HttpCacheability.Private 会抑制 ETag?

在编写自定义 IHttpHandler 时,我遇到了一种与 HttpCachePolicy 对象有关的行为,这是我没想到的。

我的处理程序计算并设置一个实体标签(使用与当前响应对象关联的 HttpCachePolicy 上的 SetETag 方法)。如果我使用 SetCacheability 方法将缓存控制设置为公共,那么一切都会像魅力一样工作,服务器会沿着电子标签标头发送。如果我将其设置为私有,则电子标签标题将被禁止。

也许我只是看起来不够努力,但我在 HTTP/1.1 规范中没有看到任何可以证明这种行为合理的东西。为什么您不想将 E-Tag 发送到浏览器,同时仍禁止代理存储数据?

将返回

但是,如果我们将其更改为公开,它将返回

到目前为止,我已经在 ASP.NET 开发服务器和 IIS6 上运行它,结果相同。我也无法使用显式设置 ETag

更新:在 IIS7 中运行时可以手动附加 ETag 标头,我怀疑这是由于 ASP.NET 和 IIS7 管道之间的紧密集成造成的。

澄清:这是一个很长的问题,但核心问题是:为什么 ASP.NET 这样做,我怎样才能绕过它,我应该吗?

更新:我将接受托尼的回答,因为它基本上是正确的(去托尼!)。我发现如果你想完全模拟 HttpCacheability.Private,你可以将缓存能力设置为 ServerAndPrivate,但你也有调用缓存。SetOmitVaryStar (true) 否则缓存会将Vary: *标头添加到输出中,而您不希望这样。当我获得编辑权限时,我会将其编辑到答案中(或者如果您看到这个托尼,也许您可​​以编辑您的答案以包含该呼叫?)

0 投票
3 回答
4312 浏览

asp.net - ASP.NET 中的缓存模式

所以我只是修复了我正在开发的框架中的一个错误。伪伪代码如下所示:

因此,本质上,我从缓存中获取了一个对象,然后将原始对象与缓存对象进行比较,以查看是否需要将其保存到数据库中以防它发生更改。出现问题是因为原始对象是一个引用......所以更改 someValue 也更改了引用的缓存对象,所以它永远不会保存回数据库。我通过从缓存版本中克隆对象、切断引用并允许我将新对象与缓存对象进行比较来修复它。

我的问题是:有没有更好的方法来做到这一点,一些模式,你可以推荐?我不可能是唯一一个这样做过的人:)

0 投票
6 回答
822 浏览

c# - 长期静态页面缓存

我维护了几个没有任何动态数据的客户端站点,一切都是带有 c# 的静态 asp.net。
将整个页面缓存一段时间(例如一周)是否有任何陷阱?

Kibbee,我们在网站上使用了几个控件(广告旋转器,一些 ajax 扩展)。它们可能完全用 html 编写,但为了方便起见,我只是坚持使用我们用于其他所有站点的内容。

0 投票
4 回答
11889 浏览

caching - 内存缓存控制面板?

我们一直在 3 个网络服务器上运行eAccelerator,并希望在所有 3 个网络服务器上迁移到一个memcache池,希望将我们的数据库查找减少约 2/3。

eAccelerator 的便利之处之一是基于 Web 的控制界面 ( control.php ),事实证明,当我们不得不意外刷新缓存、快速监控缓存中的脚本等时,它非常有用。

我们一直在寻找,但没有找到任何可以为 memcache 提供相同类型功能的东西——有人知道这种东西是否存在吗?

显然,使用控制台上的 memcache 刷新缓存等很容易,但我们的特殊设置意味着我们可能会有人监控我们的前端并需要刷新缓存,而这些人不一定具有服务器上的 shell 访问权限。

0 投票
5 回答
10646 浏览

php - 缓存 MySQL 查询

有没有一种简单的方法来缓存MySQL queriesPHP失败,是否有人编写并提供了一个小的类集可以做到这一点?我可以缓存整个页面,但这不起作用,因为某些数据更改但有些没有,我想缓存没有的部分。

0 投票
6 回答
18004 浏览

.net - 如何在 Linq to SQL 中实现缓存?

我们刚刚开始在我们的 DAL 中使用 LINQ to SQL 并且我们还没有真正提出缓存模型的标准。以前我们使用的是一个基本的“DAL”类,它实现了我们所有的 DAL 类都继承自的缓存管理器属性,但现在我们没有了。我想知道是否有人提出了一种“标准”方法来缓存 LINQ to SQL 结果?

如果这有所作为,我们正在 Web 环境 (IIS) 中工作。我知道这很可能最终成为一个主观问题,但我仍然认为这些信息很有价值。

编辑:澄清一下,我不是在谈论缓存单个结果,我更多的是一种架构解决方案,例如如何设置缓存,以便所有链接方法使用相同的缓存架构。

0 投票
0 回答
2210 浏览

asp.net - .NET 2.0+ 的分布式缓存?

使用 .NET 实现分布式缓存的最佳方法是什么?

编辑:我正在寻找内部和外部应用程序的通用缓存模式

0 投票
10 回答
39716 浏览

c# - 在 asp.net 中锁定缓存的最佳方法是什么?

我知道在某些情况下,例如长时间运行的进程,锁定 ASP.NET 缓存非常重要,以避免其他用户对该资源的后续请求再次执行长进程而不是访问缓存。

c# 在 ASP.NET 中实现缓存锁定的最佳方法是什么?

0 投票
5 回答
5105 浏览

asp.net - 多线程环境中的文件访问策略(Web App)

我有一个文件,它是一些数据的 XML 表示,这些数据取自 Web 服务并在 Web 应用程序中本地缓存。这个想法是这些数据是非常静态的,但可能会改变。因此,我将其设置为缓存到文件中,并在其上放置了一个监视器以检查它是否已被删除。删除后,文件将从其源刷新并重建。

不过,我现在遇到了问题,因为显然在多线程环境中,当它仍在读取/写入文件时尝试访问数据时,它会崩溃。

这让我很困惑,因为我添加了一个要锁定的对象,并且在读/写期间它总是被锁定。我的理解是,尝试从其他线程访问会被告知“等待”直到锁被释放?

只是让你知道,我是多线程开发的新手,所以我完全愿意接受这是我的一个错误:)

  • 我错过了什么吗?
  • 多线程环境中最好的文件访问策略是什么?

编辑

抱歉 - 我应该说这是使用ASP.NET 2.0 :)