问题标签 [clientside-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 投票
7 回答
2189 浏览

javascript - JavaScript 能否在完整的 HTTP 请求往返中存活下来?

是否有可能让 JavaScript(特别是 JavaScript 变量及其内容)在完整的 HTTP 请求中存活下来?我想在页面更改时在客户端“缓存”/持久化信息,而不必使用隐藏的表单字段或任何与 HTML 相关的东西。

这可能吗?

编辑:让我为我的意思添加一个用例。

  1. 假设我有一个名为arrayOfPersons的 JavaScript 数组,我将它作为页面 /HomePage 的一部分加载,现在它包含 1,000 个客户端对象。
  2. 现在用户切换页面并将一个全新的页面 /MyAccount 加载到浏览器中
  3. 我的目标:在用户请求全新页面/ MyAccount 后,我​​在页面/HomePage 上加载的arrayOfPersons 仍然可用。

希望能澄清我的意思。谢谢!

0 投票
1 回答
897 浏览

mobile-application - 移动混合/桥应用程序开发的缓存最佳实践

我真的需要限制任何不必要的网络流量和服务器行程。解决方案:常识缓存。(我不会在阳光下缓存所有东西)。

但是,在阅读了缓存文件文档并实现了几个快速示例之后,缓存 ajax json 结果的最佳时间是什么时候当然,每次显示我的视图时,我都可以进行通常的缓存/无缓存检查。但是有没有办法在初始应用程序启动期间执行异步加载以预取我知道用户将需要的远程数据?使用connectionStateChanged事件是唯一的方式(或最接近的方式)吗?有没有办法“挂钩”到启动画面(是的,我知道苹果希望启动画面主要用于过渡)?窗口.onload?

0 投票
1 回答
1146 浏览

c# - 响应 304 - 使用 ASP.NET Web 服务的客户端缓存

我正在用 ASP.NET 4.5 开发我的应用程序。我设置了一个网络服务。Jquery 使用 GET Ajax 调用访问 Web 服务。该函数有一个 'id' 参数,并且对于每个 id 它返回不同的内容。

我想在服务器和客户端上缓存该数据。在客户端,我已经知道如何使用“CacheDuration”,但问题出在客户端。我使用 HttpFox 来获取每个响应的标题。

我在函数的开头设置了以下代码:

我想要做的是防止客户端再次发送相同 ID 的请求,并这样做让我们说.. 10 分钟。所以在第一次调用时会发出请求,我们得到响应 200。第二次响应头应该是 304。

现在上面的代码没有做到这一点,我想知道如何实现这一点。同样,我正在谈论返回 304 的客户端缓存,因此它希望再次访问服务器以获取相同的“id”,直到缓存过期。

我知道可以使用代码完成,所以请不要提交IIS类型的解决方案。

需要你的帮助来解决这个问题。

0 投票
1 回答
1541 浏览

.net - 客户端缓存 C#

我的 wpf 客户端在启动时从服务器加载了很多常备数据。所以,我想在客户端实现一个缓存策略。

我知道 .NET 框架 4 中的新 System.Runtime.Caching 命名空间。不幸的是,只有一个内存缓存。我不想在客户端每次启动时加载大量数据。所以我正在寻找一个持久的客户端缓存。

你怎么看待这件事?

另一个想法是我使用 OODB(如 db4o 或 VelocityDB)进行客户端缓存。这是一个坏主意吗?我在客户端缓存方面没有任何经验。

感谢您的回答和建议。

亲切的问候,亲

0 投票
0 回答
1112 浏览

asp.net - RadGrid - 客户端绑定和缓存

我有一个 asp.net 应用程序,其中有一个显示数据库记录的 radGrid 控件。我希望网格控件进行客户端缓存(分页和排序)。但是,我只能在 Telerik 的网站上找到一个示例(网格 - 客户端绑定和缓存),但它使用 Web 服务作为数据绑定位置源。

有没有人有 radGrid 的经验,客户端缓存显示来自数据库的数据?

0 投票
1 回答
999 浏览

angularjs - Angular + Breeze 项目中查找的客户端缓存问题

我们有一个基于 John Papa 使用 Angular、Breeze 和 UI-Bootstrap 的 HotTowel SPA 的项目。

我们在使用客户端缓存从 SQL 查找表中加载下拉列表时遇到了问题。视图在数据缓存之前加载,导致视图首次加载时出现空的下拉菜单。如果我们刷新视图,则会填充下拉列表。我们意识到这是排序和路由问题,但无法弄清楚如何使其工作。

这个问题似乎集中在 Promise 的使用以及如何识别它们何时成功返回。我们使用prime函数在启动时从数据库加载缓存数据,但在getActionDomain()函数访问数据之前加载搜索视图。

我们将不胜感激任何指示或想法。

谢谢,

JG

app.js 中的 app.run 是起点

主要功能位于 datacontext.js 模块中:

代码在 search.js 视图控制器模块中调用

0 投票
1 回答
90 浏览

javascript - Gulp 网络服务器无法加载缓存被破坏的 JS 资源

我有一堆 JS 文件,这些文件在 JS 缓存清除部署期间已经过版本控制。它看起来像这样。

我使用 gulp 执行缩小和压缩。完成后,我将使用附加版本值的文件名将它们保存到本地目录。这是代码。

我使用 gulp-webserver 在开发环境中提供资产。这是配置。但是,它不会选择目录中的 JS 文件。它只是在页面加载时回退到 index.html。

我不确定是什么导致了这种行为。如果有人可以帮助我,我将不胜感激。

0 投票
0 回答
50 浏览

http - 如何防止在 Shift+F5 上请求图像?

我有一个包含大量图像的页面的网站。这些图像在服务器上永远不会更改(如果它们更改,引用它们的页面上的 URI 将具有不同的版本参数,在诸如http://cdn.example.com/image1.jpg?v=123之类的 URI 中) .

根据StackOverflow 上的答案中的建议,这些图像带有Cache-Control: max-stale=31536000, public标题。

ETag标题被禁用,如另一个答案中所建议的那样。

当我F5在 Chrome 中按下时,一切都按预期工作:页面重新加载,并且没有图像请求。但是,当我按Ctrl+时F5,浏览器会向服务器发出请求。

我希望它的行为与 favicon 一样:仅在明确询问时才向服务器发出请求(即特定图像上Ctrl的+ ),并在我在包含图像的页面上执行+时避免往返服务器。F5 CtrlF5

可能吗?

如果是,我应该在响应中添加哪些标题?

笔记:

  • 开发者控制台在测试期间保持关闭。
  • 内容直接从服务器提供;没有反向代理。
  • 当我在页面上按Ctrl+后请求图像时,请求包含,因此无法使用 HTTP 304 响应。F5Cache-Control: no-cache
0 投票
1 回答
511 浏览

redis - Redisson RLocalCachedMap 是否会因 Redis-Server 中的更改而失效?

我的用例:我有一个单节点应用程序(MyApplication),它使用 RLocalCachedMap(比如 testMap)与 redis-server 通信,并在应用程序中本地缓存数据。另一方面,另一个非 java 应用程序说另一个应用程序(我们无法控制)将更新同一地图 testMap 上的 redis-server 中的数据。在这种情况下,get MyApplication 中的 RLocalCachedMap 是否会使本地缓存条目无效?

如果不是,您建议如何实施 Redis 服务器辅助客户端缓存(https://redis.io/topics/client-side-caching)?有没有一种方法可以让我使用监听 redis-server 失效事件并使本地缓存与 redis-server 数据保持同步(有或没有 RLocalCachedMap,因为它不强制使用 RLocalCahedMap)。? 请建议。

0 投票
0 回答
352 浏览

c# - 侦听来自 Redis 客户端跟踪(客户端-服务器缓存)的失效消息

StackExchange.Redis NuGet 包尚不支持 Redis 6客户端缓存功能,但似乎可以手动启用此功能。

我无法成功接收预期的失效消息。

在下面的示例代码中,建立了三个连接。

第一个连接用于订阅__redis__:invalidate接收到的失效消息。

另外两个启用了客户端跟踪,该REDIRECT选项用于将失效消息重定向到第一个连接。这是为了复制 RESP2 所需的协议。假设(并且未经我确认)StackExchange.Redis使用默认协议 RESP2 启动连接。

然后在两个客户端连接上设置密钥,以便 redis 服务器可以跟踪两者的密钥并发送失效消息。

最后,无限循环a每秒更新 ket。第一个连接订阅了__redis__:invalidate频道,是其他两个客户端的重定向源。预计OnMessage将调用处理程序并将无效消息打印到控制台,但是,这永远不会发生。

有没有人知道如何使用 StackExchange.Redis 正确使用此功能?

更新

看起来 StackExchange.Redis 实际上创建了两个连接:一个用于数据库,一个用于订阅者。

因此,var clientId1 = db1.Execute("CLIENT", "ID");获取数据库连接的客户端 ID,而不是订阅者连接。

这意味着db2.ExecuteAsync("CLIENT", "TRACKING", "ON", "REDIRECT", (string)clientId1)正在设置重定向到不正确的连接。

我还没有找到一种以编程方式获取订阅者的客户端 ID 的方法......