问题标签 [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.
php - 如何避免缓存中对象的重复副本?
我正在使用 memcache 为 Web 应用程序的模型层设计缓存,我最大的问题之一是数据一致性。我想到了像这样缓存数据:(key=query,value=list of object ids result of the query)对于列表的每个id:(key=object.id,value=object)
因此,每次完成查询时:如果查询已经存在,我会从缓存中检索列表中指示的对象。如果不是,则列表的所有对象都存储在缓存中,替换任何其他旧值。
有人用过这个替代品吗,是上帝吗?还有其他想法吗?
caching - 任何 HTTP 代理都具有对请求/响应缓冲和延迟连接的显式、可配置支持?
在与移动客户端打交道时,在传输 HTTP 请求期间出现数秒延迟是很常见的。如果您从 prefork Apache 提供页面或服务,即使您的应用服务器逻辑在 5 毫秒内完成,子进程也将在几秒钟内为单个移动客户端提供服务。我正在寻找支持以下功能的 HTTP 服务器、平衡器或代理服务器:
请求到达代理。代理开始在 RAM 或磁盘中缓冲请求,包括标头和 POST/PUT 正文。代理不打开到后端服务器的连接。这可能是最重要的部分。
代理服务器在以下情况下停止缓冲请求:
- 已达到大小限制(例如 4KB),或
- 请求已被完整接收,headers 和 body
只有现在,在内存中有(部分)请求时,才打开到后端的连接并中继请求。
后端发回响应。代理服务器再次开始立即缓冲它(最大到更大的大小,比如 64KB。)
由于代理有足够大的缓冲区,后端响应在几毫秒内完全存储在代理服务器中,后端进程/线程可以自由处理更多请求。后端连接立即关闭。
代理以尽可能快或尽可能慢的速度将响应发送回移动客户端,而无需与后端连接占用资源。
我相当肯定你可以用 Squid 做 4-6,而 nginx 似乎支持 1-3(在这方面看起来相当独特)。我的问题是:是否有任何代理服务器可以理解这些缓冲和不打开连接直到准备好功能?也许只有一点 Apache config-fu 让这种缓冲行为变得微不足道?他们中的任何一个认为它不是像 Squid 那样的恐龙并且支持精益的单进程、异步、基于事件的执行模型吗?
(旁白:我会使用 nginx,但它不支持分块 POST 主体,因此无法为移动客户端提供服务。是的,便宜的 50 美元手机喜欢分块 POST……叹息)
asp.net-mvc - 使用存储库/服务模式和 MVC 时缓存数据对象
我有一个基于 MVC 的站点,它使用存储库/服务模式进行数据访问。服务被编写用于大多数应用程序(控制台、winform 和 Web)。目前,控制器直接与服务通信。这限制了应用适当缓存的能力。
我看到我的选择如下:
- 为 Web 应用程序编写一个包装器,它实现了执行缓存的 IWhatEverService。
- 通过缓存每个 Action 的 ViewData 在每个控制器中应用缓存。
- 不用担心数据缓存,只需为每个 Action 实现 OutputCaching。
我可以看到每个的优点和缺点。使用 Repository/Service 进行缓存的最佳实践是/应该是什么
iis - IIS ASP 缓存
我正在尝试按照我购买的软件的说明在 IIS 中配置 ASP 缓存。这应该使它运行得更快。
软件说明指向那篇文章。
我遇到的问题是我的 IIS 对话框中不存在提到的“ ASP 文件缓存部分”...
我错过了什么吗?有什么配置可以让它出现吗?我在 W2003 Server Enterprise Edition 上运行 IIS 6.0。
更新1:我以本地管理员身份登录(框不在域中)
asp.net - 您在运行 ASP.NET 的网络场中使用什么进行分布式缓存?
我很好奇其他人在这种情况下使用的是什么。我知道一些可用的选项,例如 memcached 端口或 ScaleOutSoftware。memcached 端口似乎没有被积极处理(如果我错了,请纠正我)。ScaleOutSoftware 对我来说太贵了(我不怀疑它值得)。这并不是说我不想听到人们使用 memcached 或 ScaleOutSoftware。在这一点上,我只是陈述我“知道”的内容。
所以我的问题基本上是这样的:对于那些积极使用分布式缓存的人,你在使用什么,你对它是否满意,我应该注意什么?
我很快就会搬到两台服务器上……两者都将在同一个位置。我相当大量地(但小心地)使用缓存来减少我的数据库服务器上的负载。
编辑:我下载了 Scaleout Software 的解决方案。我已经为它编写了代码,它似乎工作得很好。我只需要决定我的钱包是否愿意为此付出现金。:) 任何人对 ScaleoutSoftware 有好的或坏的体验吗?
再次编辑:我问这个已经有一段时间了?还有什么想法吗?我们最终从 ScaleOutSoftware 购买了解决方案,并且对它感到满意,但我很好奇其他人在做什么。
nhibernate - Strict vs NonStrict NHibernate 缓存并发策略
这个问题是关于NHibernate二级缓存的ReadWrite和NonStrictReadWrite缓存并发策略的区别。
据我了解,当您拥有分布式复制缓存时,这两种策略之间的区别是相关的- nonstrict 不能保证一个缓存具有与另一个缓存完全相同的值,而严格的读/写应该 - 假设缓存提供程序确实适当的分布式锁定。
我不明白的部分是,当您拥有单个缓存或分布式分区(非复制)缓存时,严格与非严格的区别是如何相关的。可以相关吗?在我看来,在非复制场景中,时间戳缓存将确保不提供过时的结果。如果它可能是相关的,我想看一个例子。
php - 缓存分页结果,清除更新 - 如何解决?
我创建了一个论坛,我们正在实施一个 apc 和 memcache 缓存解决方案来为数据库节省一些工作。
我开始使用“Categories::getAll”之类的键来实现缓存层,如果我有用户特定的数据,我会在键中附加用户 ID 之类的东西,这样你就可以得到"User::getFavoriteThreads|1471"
. 当用户添加新的收藏线程时,我会删除缓存键,然后它会重新创建条目。
然而,问题来了:
我想缓存论坛中的线程。很简单,“Forum::getThreads|$iForumId”。但是......使用分页,我必须将它分成几个缓存条目,例如
没关系,直到有人在论坛上发布新帖子。"Forum::getThreads|$iForumId"
无论限制和偏移量是多少,我现在都必须删除 下的所有键。
解决这个问题的好方法是什么?我真的不想遍历所有可能的限制和偏移,直到找到不再匹配的东西。
谢谢。
ruby-on-rails - 间隔轨道缓存
我需要缓存一个页面。为此,我使用了 ActionController 的 caches_page。但现在,我想每 10 分钟过期并重新生成一次。我有哪些选择?
后来:我不想为此使用任何外部工具,例如cron。重要的一点是基于间隔的缓存到期。
caching - 网络缓存策略?
在决定何时以及如何进行缓存时,您会考虑哪些问题、流程和问题。总是没有胜利的情况吗?
这假设您被困在已优化的代码库中。