问题标签 [fragment-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 投票
1 回答
464 浏览

ruby-on-rails - 在 Rails (3.0.7) 中测试片段创建和过期片段

我正在尝试在我的应用程序中实现片段缓存。它显示了很多很少更改的数据,因此我认为片段缓存将是解决我一直遇到的一些性能问题的最佳解决方案。

我正在使用 Rail 的内置片段缓存和缓存清除器,但我似乎找不到任何测试片段创建/到期的好方法(使用 rspec 和朋友)。

任何帮助将非常感激。


澄清:我真正想要测试的是适当的片段是否已过期,而不是任何特别的东西进出缓存。

0 投票
1 回答
250 浏览

ruby - ruby on rails 3.1 片段缓存

我有一个应用程序,我想缓存页面的某些部分,并且我已经阅读了很多关于执行此操作的方法。

我知道片段缓存是在我的项目中执行此操作的最佳方式,但我找不到一个简单的示例来学习如何实现它。

我想将片段缓存与autoexpire一起使用。

我在哪里设置自动过期?周围有什么例子吗?我怎样才能做到这一点?

0 投票
3 回答
1308 浏览

c# - 清除部分输出缓存

我有一个页面,其中包含作为输出缓存(部分输出缓存)的控件。这些设置如下:

Global.asax

如何设置以便我可以清除特定页面上的此输出缓存?

可以设置吗MyPageWithCachedControl.aspx?ClearCache=true???

0 投票
1 回答
3153 浏览

ruby-on-rails - Rails 3 缓存:如何使用带有 Action 和 Fragment 缓存的清扫器来使缓存过期?

我正在处理一个显示餐厅菜单的页面。我有 2 个模型:FoodMenu has_many :products 和 Product belongs_to :food_menu。这两种型号我都没有控制器。相反,我使用“pages_controller.rb”来显示每个 FoodMenu 及其具有“菜单”操作的产品:

我想对菜单页面 (localhost:3000/menus) 使用动作缓存,它正在工作,但是当我更新、创建或销毁产品时,我无法让缓存过期。

在“pages_controller.rb”的顶部,我有:

我尝试使用此处的示例代码为 app/sweepers 中的 Product 和 FoodMenu 模型创建单独的清扫器:http://guides.rubyonrails.org/caching_with_rails.html#sweepers 但这不起作用。然后,我在 SO 条目中读到清扫器应该观察控制器使用的所有模型,所以我认为这意味着我必须创建一个“pages_sweeper.rb”,它观察 Product 和 FoodMenu 模型并过期“菜单”动作。那也没有用。我究竟做错了什么?这是我现在在“pages_sweeper.rb”中的内容:

0 投票
1 回答
618 浏览

ruby-on-rails - 如何在对象更新时使对象索引的片段缓存过期

我正在片段缓存这个片段:

现在,显然,每次更新对象时我都需要使缓存过期(从数据库的角度来看)。

所以我应该把这条线:

...在控制器中的各处,每次操作更新(或保存对象时。

但我想知道是否有一种DRYer 方法可以做到这一点,比如在对象模型(/app/models/object.rb)中编写某种钩子,它会在每次更新(或保存)时触发 expire_fragment 命令。

可能吗?

编辑#1:

也许我可以像这样覆盖对象模型中的保存方法:

但是,为了使其正常工作,我必须确保所有其他保存方法也调用“保存”方法,例如 *update_attributes*,保存!等。是这样吗?

0 投票
1 回答
171 浏览

asp.net - 在 asp.net 中更新缓存的用户控件

我的页面上有一个用户控件来显示登录用户的个人资料图片。我已经使用<%@ OutputCache Duration="120" VaryByParam="none" %>.

我在这里遇到一个问题,即当我注销当前登录用户并以其他用户身份登录时,个人资料图片用户控件没有刷新,它仍然显示以前登录用户的图片。

当用户注销和另一个用户登录后用户控件刷新时,有人可以帮我解决这个问题吗?

任何帮助将不胜感激。

先感谢您

0 投票
1 回答
112 浏览

ruby-on-rails - 将 fragment_caching 的 rails 缓存存储设置为不同

是否可以将 rails 片段缓存配置为 file_store 并让 Rails.cache 对象使用内存存储来存储值?或者它们到底是相同的存储机制?

0 投票
1 回答
272 浏览

ruby-on-rails - Rails 中的资产丢失(也使用片段缓存)。没有内存缓存

在 Heroku 上使用 Rails 3.1.1,运行两个 web dyno。

我目前不使用内存缓存。我正在成功使用片段缓存

我的日志中有很多缓存未命中(而且很少有新鲜的)。应该注意的是,facebox-2(实际上获得了“新鲜缓存”)在缓存片段之外。

如您所见,据我所知,未命中并没有跟随“商店”,它们实际上并没有被缓存:

生产.rb

rake assets:precompile在本地成功以生产模式运行并成功将其上传到 Heroku。

我认为我的问题与这个问题密切相关,尽管我在生产模式下运行它(应该没有任何区别,对吧?)。

我已经对 Memcached 进行了一些实验,但我仍然是如何使用它的初学者。

我个人的看法是,我试图从缓存中获取缓存的图像,这会破坏验证。例如,在我正在寻找的碎片缓存中

banners/annons-884c9fbe7f6805249247ef02438fca08.jpg

而它可能会与另一个“代码”一起缓存,例如

这个对吗?

对于我的问题:

  1. 我和这个问题有同样的问题吗?可以这么说,是我在缓存中缓存吗?

  2. Memcached 和 Rake::Cache 是处理这个问题的方法吗?如果是这样,我更希望将碎片化的 html 页面存储为文件,而不是存储在内存缓存中(它们是 1.000 x 3 Mb)。我怎样才能做到这一点?

  3. fragment_caching 实际上并没有在 Heroku 上创建这些文件是否正确,因为应用程序没有写权限?

  4. 这是否可能会影响我的应用程序的性能(它很慢)?

  5. 简而言之,解决这个问题的简单方法是什么?

0 投票
2 回答
2507 浏览

ruby-on-rails - 使用自动过期密钥缓存俄罗斯娃娃片段 - 性能优缺点

该问题基于 2 篇文章:
-来自 37signals 的 DHH 的Basecamp Next
- Adam Hawkins的 Rails 中的高级缓存

我对使用俄罗斯娃娃缓存的性能影响有点困惑,特别是:

  1. 当使用自动过期键时,似乎每个请求都会导致访问数据库以获取对象时间戳 - 我错过了什么吗?(我知道在最好的情况下,您必须只为层次结构中的顶级键这样做,但仍然......)

  2. 在第 1 篇文章中,他们缓存了一个待办事项列表以及每个待办事项。缓存列表非常有意义,因为它节省了大量工作(所有项目的数据库查询)。但是为什么要缓存单个项目呢?您已经在数据库中获取项目时间戳,那么您到底要保存什么?生成几行html?

  3. 在第 2 篇文章中,Adam 像这样缓存视图的块: cache [post, 'main-content']... cache [post, 'comments'] 添加评论时,它会更改帖子的时间戳,因此会使两个整体无效。然而,main-content并没有改变——你不想重新生成它!!!如何只使评论无效。(这实际上是一个非常常见的用户案例 - 一个具有一些逻辑独立部分的模型:对象本身、不同的关联、其他存储中的数据等)

对我来说,似乎俄罗斯娃娃缓存只有在嵌套对象的层次结构较深时才有意义。(在 basecamp 中,您有项目-> 待办事项列表-> 待办事项-> 项目列表)。但是,如果您的层次结构较浅,最好自己进行失效。

对于任何反馈,我们都表示感谢!
谢谢。

0 投票
1 回答
649 浏览

ruby-on-rails-3 - rails3缓存:带有扩展名的过期片段

如何使用来自另一个控制器的文件扩展名 (.json) 使缓存中的片段过期?

我正在使用 Rails 3.2.8。

我有两个相同型号的控制器:/admin/books_controller 和 /api/books_controller。管理控制器用于创建/更新/删除书籍并需要提升访问权限。api/books_controller 用于搜索/列出用户关于一本书的详细信息。我试图缓存 api/books_controller

这很好用。第一个请求很慢,第二个请求很快

现在,当书被更新或销毁时,我需要使碎片过期。我有这个:

但是,这不会解析到相同的片段(请求现在是 HTML 请求,发送到不同的控制器):

我的带有 JSON 请求的 API 控制器读取和写入此片段:

我的管理控制器试图使这个片段过期:

如何使用不同的请求格式从另一个控制器过期 views/localhost:3000/api/books/4.json?

这个问题:rails 3 caching: expire action for named route表示我可以使用正则表达式使多个片段过期,但这需要缓存中的键是可枚举的(http://api.rubyonrails.org/classes/ActionController/Caching /Fragments.html#method-i-expire_fragment )