我们想添加一个dynamic块到产品页面。 问题是产品页面有整页caching(由于速度问题,我们无法closures)。 我们希望根据login用户的帐户在每个产品页面上显示不同的信息,并且因产品而异。 我创build了一个具有自己的caching的单独的块,但是这显示了与上一个产品页面相同的块。 我试图改变它的caching方法,所以它不会保存上一个产品页面的caching。 这是我进入产品页面的前几次,但突然开始显示一个Magento错误页面,说:“网站遇到错误,同时检索http://www.mycompany.com/productpage.html 。它可能是下来进行维护或configuration不正确。“ 这是我迄今为止所做的。 我创build了app / code / local / MyCompany / MyModule / PageCache / etc / config.xml来添加MyCompany_PageCache_Model。 然后,我创build了这个文件,用于控制app / code / local / MyCompany / MyModule / PageCache / Model / Container / MyFile.php中的caching与这些function: protected function _getCacheId() { return 'CONSTANT_CACHE' . md5($this->_placeholder->getAttribute('cache_id')); } protected function _saveCache($data, $id, $tags = […]
我意识到这个问题已经被问到了,但是在现代REST实践中,这个问题以前的迭代和他们的答案都不是准确或充分的。 这个问题需要一个明确的答案。 问题众所周知,IE(甚至11)cachingAJAX请求,这真的很愚蠢。 大家都明白这一点。 不好理解的是,以前的答案都不够。 SO上这个问题的每一个例子都被标记为充分回答: 1)在每个请求上使用唯一的查询string参数(如unix时间戳),以使每个请求的URL唯一,从而防止caching。 – 要么 – 2)使用POST而不是GET,因为除了在某些特殊情况下,IE不会cachingPOST请求。 – 要么 – 3)使用由服务器传递的“caching控制”头。 国际海事组织在涉及现代REST API实践的许多情况下,这些答案都不是足够的或实际的。 对于POST和GET请求,REST API将具有完全不同的处理程序,具有完全不同的行为,所以POST通常不是GET的适当或正确的替代方法。 同样,许多API都有严格的validation,并且由于许多原因,当提供查询string参数时,会产生500或400个错误,这些错误是他们不希望的。 最后,我们通常会与第三方或其他不灵活的REST API进行接口,因为我们无法控制服务器响应所提供的头文件,并且添加caching控制头文件不在我们的范围之内。 所以,问题是: 在这种情况下,客户端是否真的没有办法阻止IEcachingAJAX GET请求的结果呢?
我们知道IIS高速cachingConfigurationManager.AppSettings,所以它只读取一次磁盘,直到web.config被更改。 这是为了性能目的而完成的。 有人在: http://forums.asp.net/p/1080926/1598469.aspx#1598469 表示.NET Framework不会为app.config执行相同的操作,但是它会从磁盘读取每个请求。 但我觉得很难相信,因为它会变慢。 请告诉我他是错的,否则我将不得不修复我编写的每个控制台/ Windows窗体/ Windows服务。 更新我很遗憾,我误解了人们在上面的链接论坛中所说的话。
我知道你可以强制更新页面的caching,通过在Facebook的debugging工具上inputURL作为该应用/页面的pipe理员login: https : //developers.facebook.com/tools/debug 但是我需要的是当我们的销售部门有人更新我们的一个页面的主图像时 , 自动调用API端点或者来自我们内部应用程序的一种方法 。 要求成千上万的销售人员以pipe理员身份login并手动更新页面的caching,无论何时更新我们的项目描述或图像,都不是一种select。 我们不能等待24小时让Facebook更新caching,因为我们每天都会收到我们客户的投诉,只要我们在我们一边改变它就看不到变化。
我遇到了3.1.0.rc4上Rails.cache方法的问题(ruby 1.9.2p180(2011-02-18 revision 30909)[x86_64-darwin10])。 在2.3.12(ruby 1.8.7(2011-02-18 patchlevel 334)[i686-linux],MBARI 0x8770,Ruby Enterprise Edition 2011.03)中,该代码工作正常,但是在升级之后开始返回一个错误。 我还没有弄清楚为什么。 尝试caching具有多个作用域的对象时,似乎发生该错误。 另外,不pipe有多less个作用域,任何使用lambdas的作用域都会失败。 我从这些模式中失败了: Rails.cache.fetch("keyname", :expires_in => 1.minute) do Model.scope_with_lambda end Rails.cache.fetch("keyname", :expires_in => 1.minute) do Model.scope.scope end 这是我收到的错误: TypeError: can't dump hash with default proc from /project/shared/bundled_gems/ruby/1.9.1/gems/activesupport-3.1.0.rc4/lib/active_support/cache.rb:627:in `dump' from /project/shared/bundled_gems/ruby/1.9.1/gems/activesupport-3.1.0.rc4/lib/active_support/cache.rb:627:in `should_compress?' from /project/shared/bundled_gems/ruby/1.9.1/gems/activesupport-3.1.0.rc4/lib/active_support/cache.rb:559:in `initialize' from /project/shared/bundled_gems/ruby/1.9.1/gems/activesupport-3.1.0.rc4/lib/active_support/cache.rb:363:in `new' from /project/shared/bundled_gems/ruby/1.9.1/gems/activesupport-3.1.0.rc4/lib/active_support/cache.rb:363:in `block in write' […]
我想要将查询的结果caching在ember-data中。 ( findQuery ) 要说清楚:我不想caching整个模型; 只是查询的结果是什么模型。 这是正确的地方在哪里? 我想在适配器中实现这个,并cachingAJAX调用的结果,但我不认为这是一个好的解决scheme,因为我不想重载加载,也许更新和/或修改模型数据。 我不认为它可能只是返回一个ID列表,并操纵适配器和串行器这个简单的用例似乎是凌乱的! 其实我不希望findQuery被称为特定types的querys。 就像findAll的行为一样。 尼斯会像一个queryShouldBeCached钩子。 有这个好的解决scheme吗?
我最近通过回答一个简单的问题来糟糕的回答了一个面试问题:像LinkedIn这样的网站如何有效地向您显示每个在网页上显示的人的关系距离(第一/第二/第三)(例如,在人员search结果,工作人员列表在一家公司等)? 我得到了解决scheme的基本“技巧”:find“距离我”是一个常见的操作(例如,在一个页面上20x +,每个login会话100个),所以你可以做一部分“距离我X“,将其caching,然后多次重复使用该caching的部分结果,以使其他操作更便宜。 我也猜测,部分结果很可能是我的二级连接,因为“caching所有三级连接”在RAM和CPU中的成本太高。 </ EDIT> 但是,当试图将这种见解转化为解决scheme时,我想出了一个令人尴尬的答案,涉及到创build持久的caching,这个caching是网站上每个人的二级连接(这将会非常昂贵,而且维护复杂)莫名其妙地绕过布鲁姆filter ,这种方式几乎没有技术意义。 我不会在这样的答案之后雇用自己的! 后来,当我在没有面试压力的情况下思考这个问题时,我想出了一个更合理的答案。 build立一个非常快速的方式来获得每批用户ID的第一级连接(批量大小可达〜1000?)。 这可能意味着一个RAM专用服务器集群,它可以将整个networking的第一级连接caching在内存中。 幸运的是,有五千万会员x平均。 每个成员100个连接x每个成员4个字节ID = <25GBcaching在RAM中,这可以通过合理定价的硬件来实现。 而且每天的变化数量将在1%以下,所以保持caching最新不是太难。 (请注意,关系数据库可能是一个不好的select来实现这个caching,因为“大量的随机I / O”访问模式杀死了关系数据库的性能。) 当用户login时,通过获取每个第一级连接的第一级连接来caching他的第二级连接,并且使用散列表(键=第二级ID,值=连接你的第一级连接的数组) 。 同样caching你的第一级连接,这样你就可以通过一次调用将你的第一级和第二级拉回远程caching服务器。 用户ID很容易分区,所以像memcached这样的分布式caching可能会很好地工作。 对于任何用户ID,要查找它是否在您的“networking”中,以及它与您(第一,第二,第三)有什么关系,请执行以下操作: 如果ID在您的一级连接中,请停止。 试着在你的caching二级连接哈希表中查找ID。 如果find,返回连接你的连接数组。 获取ID的第一级连接,并为它们中的每一个重复步骤#2。 将所有结果汇总到一个数组中并返回。 (EDIT)重构为一个批处理实现(“从我到N个不同的用户查找距离”),所以你可以从步骤#3获得所有的远程结果,而不必弥补N个远程调用。 </ EDIT> 但我相信有更好的答案。 你的是啥呢? 如果你想要额外的挑战,试着模拟一个inteview的情况(不能在网上查找解决scheme)。 请注意,这个问题是关于一个最佳的解决scheme,无论LinkedIn今天是如何实际做到的 ,在我写上自己的答案之后,我看了一下。
我正在将caching添加到ASP.NET Web应用程序。 这是.NET 4,所以我可以使用System.Runtime.Caching命名空间中的类(根据我的理解,它被添加来提供与System.Web.Caching类似的function,但是对于非Web应用程序,应用。) 但是因为这是一个networking应用程序,我最好使用System.Web.Caching? 还是以某种方式更新的System.Runtime.Caching优越?
我有一个每10分钟运行一次的cron作业,并更新内容types和x-amz-meta。 但从昨天开始,似乎在cron作业运行之后,亚马逊并没有完成所做的更改(刷新其caching)。 我甚至去做了手动的变化,但没有改变… 当video上传时,它具有application/x-mp4内容types,并且cron作业将其更改为video/mp4 。 虽然S3有正确的内容types的video/mp4云端显示application/x-mp4 (旧内容types)…. cron工作在过去的6个月里一直没有问题。 亚马逊caching有什么问题? 我如何同步caching?
我正在整合SqlCacheDependency在我的LinqToSQL数据上下文中使用。 我在这里使用Linq查询的扩展类 – http://code.msdn.microsoft.com/linqtosqlcache 我已经连接了代码,当我打开页面,我得到这个exception – “当前数据库的SQL Server Service Broker未启用,因此不支持查询通知,如果希望使用通知,请为此数据库启用Service Broker。” 它来自全球这个事件 protected void Application_Start() { RegisterRoutes(RouteTable.Routes); //In Application Start Event System.Data.SqlClient.SqlDependency.Start(new dataContextDataContext().Connection.ConnectionString); } 我的问题是… 如何在我的SQL Server 2008数据库中启用Service Broker? 我试图运行这个查询.. ALTER DATABASE表名SET ENABLE_BROKER但它永远不会结束,永远运行,我必须手动停止它。 一旦我在SQL Server 2008中有这个设置,它会过滤到我的DataContext,还是我需要在那里configuration一些东西? 谢谢你的帮助 Truegilly