Questions tagged «caching»

缓存是一种用于在本地临时存储(缓存)数据以减少对远距离存储的数据的访问时间的机制。对于CPU /磁盘/ Web浏览,请使用相关标签(cpu-cache,diskcache等)

6
从ASP.NET禁用所有浏览器的浏览器缓存
我在明确引用了哪些ASP.NET代码才能使浏览器无法缓存页面。有多种方法可以影响HTTP标头和meta标记,并且给人的印象是,要使不同的浏览器正常运行,需要进行不同的设置。获得一段注释的参考代码来指示哪种代码对所有浏览器都有效,以及对于特定的浏览器(包括版本)是必需的,这真的很棒。 那里有关于此问题的大量信息,但是我还没有找到一个很好的参考来描述每种方法的好处,以及是否已被更高级别的API取代了特定技术。 我对ASP.NET 3.5 SP1特别感兴趣,但是也可以获取早期版本的答案。 此博客条目Firefox和IE Caching之间的两个重要区别描述了一些HTTP协议行为差异。 以下示例代码说明了我感兴趣的事情 public abstract class NoCacheBasePage : System.Web.UI.Page { protected override void OnInit(EventArgs e) { base.OnInit(e); DisableClientCaching(); } private void DisableClientCaching() { // Do any of these result in META tags e.g. <META HTTP-EQUIV="Expire" CONTENT="-1"> // HTTP Headers or both? // Does this only …

13
防止浏览器中的iframe缓存
如何防止Firefox和Safari缓存iframe内容? 我有一个简单的网页,其中包含一个iframe到另一个网站上的页面。外部页面和内部页面都具有HTTP响应标头,以防止缓存。当我单击浏览器中的“后退”按钮时,外部页面正常工作,但是无论如何,浏览器始终会检索iframed页面的缓存。IE可以正常工作,但是Firefox和Safari给我带来了麻烦。 我的网页看起来像这样: <html> <head><!-- stuff --></head> <body> <!-- stuff --> <iframe src="webpage2.html?var=xxx" /> <!-- stuff --> </body> </html> 该var变量总是变化。尽管事实上iframe的URL已更改(因此,浏览器应向该页面发出新请求),但浏览器只是获取缓存的内容。 我检查了来回的HTTP请求和响应,并且注意到即使外层页面包含<iframe src="webpage2.html?var=222" />了浏览器,它仍然可以访存webpage2.html?var=111。 到目前为止,这是我尝试过的方法: 使用随机var值更改iframe网址 将Expires,Cache-Control和Pragma标头添加到外部网页 将Expires,Cache-Control和Pragma标头添加到内部网页 我无法执行任何JavaScript技巧,因为我被同源政策所阻止。 我的想法不多了。有谁知道如何阻止浏览器缓存iframed内容? 更新资料 我按照Daniel建议执行的另一项测试安装了Fiddler2,但不幸的是,我仍然得到相同的结果。 这是我执行的测试: 外页Math.random()在JSP中使用生成随机数。 外页在网页上显示随机数。 外页调用iframe,传入随机数。 内页显示随机数。 通过此测试,我可以准确地看到哪些页面正在更新以及哪些页面已缓存。 外观测试 为了进行快速测试,我加载了页面,导航到另一个页面,然后按“返回”。结果如下: 原始页面: 外页:0.21300034290246206 内页:0.21300034290246206 离开页面,然后回击: 外页:0.4470929019483644 内页:0.21300034290246206 这表明即使外部页面使用URL中的其他GET参数调用内部页面,也正在缓存内部页面。由于某种原因,浏览器会忽略iframe正在请求新网址的事实;它只是加载旧的。 提琴手测试 果然,提琴手证实了同一件事。 (我加载页面。) 称为外页。HTML: …

2
如果redis已经是堆栈的一部分,为什么Memcached仍与Redis一起使用?
Redis可以完成Memcached提供的一切(LRU缓存,项目到期,现在在3.x +版本中,目前处于beta版本),也可以通过twemproxy之类的工具完成。性能也差不多。此外,Redis添加了持久性,因此在服务器重新启动的情况下无需进行缓存预热。 请参考一些比较Redis和Memcache的旧答案,其中一些更喜欢Redis替代Memcache(如果已在堆栈中): Memcached与Redis? 与Redis相比,记忆快取是恐龙吗? Redis和Memcache还是Redis? 尽管如此,在研究大型网络公司(如Instagram,Pinterest,Twitter等)的堆栈时,我发现他们同时将Memcached和Redis用于不同目的,而不是将Redis用于主要缓存。主缓存仍是Memcached,Redis用于其基于逻辑缓存的数据结构。 从2014年开始,当您已经拥有可以执行memcached可以做的所有事情的Redis组件时,为什么仍然值得把memcached作为额外的组件添加到堆栈中呢?有什么优势使建筑师/工程师除了已经存在的Redis之外仍包括内存缓存? 更新: 对于我们的平台,我们已经完全丢弃了Memcached,并使用redis满足了普通缓存和逻辑缓存的要求。高性能,灵活且可靠。 一些示例方案: 按特定模式列出所有缓存的键,然后读取或删除它们的值。在redis中非常容易,在memcached中不容易做到。 要存储超过1mb的有效负载(在redis中很容易做到),需要在memcached中调整平板大小,这本身就有性能方面的副作用。 当前缓存内容的简单快照 Redis集群以及语言驱动程序也已准备就绪,因此集群部署也很容易。


10
如何在Javascript中缓存图像
我和我的朋友们在一个网站上工作,我们希望在其中缓存某些图像,以便将来更快地显示它们。我有两个主要问题: 您如何缓存图像? 图像被缓存后如何使用?(只是为了验证图像是否在页面A上缓存,可以从缓存中调用它以在页面B上使用它,对吗?) 此外,有可能设置时,图像的缓存版本将到期? 如果包括示例和/或进一步描述页面的链接,将不胜感激。 我们可以使用原始Javascript或jQuery版本。

4
在asp.net-mvc中缓存
我想将最繁重的数据库操作缓存在asp.net-mvc站点中。在我的研究中,我发现 菲尔博客上的甜甜圈缓存 在Kazi的博客上缓存/压缩过滤器 斯科特·汉斯勒曼(Scott Hansleman)关于他们如何在SO中缓存内容的播客。 但是我还不明白。 我希望能够根据几个参数来缓存我的POST请求。这些pars在对象中。所以我想缓存以下请求的结果: public ActionResult AdvancedSearch(SearchBag searchBag) 其中searchBag是一个对象(包含一堆)可选搜索参数。我的视图本身很轻巧(应该如此),但是数据访问可能非常耗时,具体取决于搜索包中填写的字段。 我觉得我应该在数据层上缓存,而不是在动作上。 我应该如何在OutputCache属性中使用VaryByParam?


2
适用于不同类型资源的理想HTTP缓存控制标头
我想找到一组最小的标头集,这些标头可以与“所有”缓存和浏览器一起使用(也在使用HTTPS时使用!) 在我的网站上,我将拥有三种资源: (1)永久可缓存(公开/对所有用户均等) 示例:0A470E87CC58EE133616F402B5DDFE1C.cache.html(由GWT自动生成) 这些文件在更改内容时(基于MD5)会自动分配一个新名称。 即使使用HTTPS,也应该尽可能地对其进行缓存(因此,我认为应该设置Cache-Control: public,尤其是对于Firefox?) 如果内容已更改,他们不应该要求客户端往返服务器进行验证。 (2)偶尔更改(公开/对所有用户均等) 示例:index.html,mymodule.nocache.js 部署新版本的网站时,这些文件将更改其内容而不会更改URL。 它们可以被缓存,但是可能每次都需要往返来重新验证。 (3)每个请求的个人(私人/用户特定) 示例:JSON响应 在任何情况下,都不应将这些资源未加密地缓存到磁盘中。(除非我可能会缓存一些特定的请求。) 我对每种类型可能使用的标头有一个大致的了解,但是总会缺少一些东西。

1
解释器维护的整数缓存是什么?
深入研究Python的源代码后,我发现它维护了一个PyInt_Objects数组,范围从int(-5)到int(256)(@ src / Objects / intobject.c) 一个小实验证明了这一点: >>> a = 1 >>> b = 1 >>> a is b True >>> a = 257 >>> b = 257 >>> a is b False 但是,如果我在py文件中一起运行这些代码(或使用分号将它们结合在一起),结果将有所不同: >>> a = 257; b = 257; a is b True 我很好奇为什么它们仍然是同一对象,所以我深入研究了语法树和编译器,提出了下面列出的调用层次结构: PyRun_FileExFlags() mod = PyParser_ASTFromFile() …

5
为什么整数类的缓存值在-128到127的范围内?
关于我之前的问题,为什么与Integer.valueOf(String)进行==比较会得出127和128的不同结果?,我们知道Integer class有一个缓存用于存储-128和之间的值127。 只是想知道为什么在-128和127之间? Integer.valueOf()文档指出,它“缓存经常请求的值”。但是,-128和之间的值127是否经常被要求是真实的?我认为经常要求的价值观是非常主观的。 这背后有什么可能的原因吗? 从文档中还指出:“ ..并且可能会缓存此范围之外的其他值。 ” 如何实现?
81 java  caching 

3
方法引用缓存在Java 8中是个好主意吗?
考虑我有如下代码: class Foo { Y func(X x) {...} void doSomethingWithAFunc(Function<X,Y> f){...} void hotFunction(){ doSomethingWithAFunc(this::func); } } 假设hotFunction经常调用。那么建议缓存this::func如下: class Foo { Function<X,Y> f = this::func; ... void hotFunction(){ doSomethingWithAFunc(f); } } 据我对java方法引用的理解,使用方法引用时,虚拟机会创建一个匿名类的对象。因此,缓存引用只会创建一次该对象,而第一种方法是在每个函数调用上创建该对象。它是否正确? 应该缓存出现在代码中热门位置的方法引用,还是VM能够优化它,并使多余的缓存?是否有一般的最佳实践,还是这种高度VM实施特定于这种缓存是否有用?

6
Ruby on Rails:清除缓存的页面
我有一个RoR应用程序(ruby v1.8.7; rails v2.3.5)在开发环境中缓存页面。这不是什么大问题,但是缓存页面的a元素不正确。 我没有对development.rb文件进行任何更改,也没有向控制器添加任何缓存命令。 我曾尝试清除该网站(localhost)的浏览器(OSX上的Firefox 3.5)的cookie和页面缓存。我还重新启动了Mongrel。似乎没有任何帮助。 我想念什么?

10
在asp.net中锁定缓存的最佳方法是什么?
我知道在某些情况下,例如长时间运行的进程,锁定ASP.NET缓存很重要,这样可以避免其他用户对该资源的后续请求再次执行该长时间进程,而不是访问缓存。 用C#在ASP.NET中实现缓存锁定的最佳方法是什么?
80 c#  .net  asp.net  caching 


2
不使用缓存的卷曲命令
有没有办法告诉curl命令不要使用服务器端缓存?例如; 我有这个curl命令: curl -v www.example.com 如何要求curl发送新请求以不使用缓存? 注意:我正在终端中寻找可执行命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.