问题标签 [page-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 投票
2 回答
1117 浏览

ruby-on-rails - Rails 3.2 什么时候使用它缓存到磁盘的页面?

在旧的 Rails 项目中,页面缓存的工作方式与我从在线阅读文档中所期望的一样,但在 Rails 3.1 / 3.2 中,它的工作方式不同。看起来 Rails 将页面写入磁盘但从不使用它们(所以我假设它是在内存中缓存页面)。

(请耐心等待我的冗长解释,它并不复杂,只是彻底......)

在一个新的 Rails 3.2.2 应用程序中,我有以下内容:

当我在生产中启动服务器并访问 localhost 时,我看到:

文件 public/index.html 出现在磁盘上。

我正在使用 Firefox,如果我 ctrl+r 或 shift+ctrl+r 我看到:

如果我直接编辑 public/index.html 文件并点击 ctrl+r 或 ctrl+shift+r 我看不到我对文件所做的更改。

如果我打开一个 Rails 控制台并输入,Rails.cache.clear我会看到:

现在,如果我 ctrl+r 或 ctrl+shift+r 我看到:

我对 public/index.html 的更改被覆盖。

因此,似乎从未使用过 public/index.html 。

如果我编辑在 tmp/cache 中找到的 html 文件(在上面的控制台输出中),然后 ctrl+r 或 ctrl+shift+r 我仍然看不到我直接对 tmp/cache 文件所做的更改。

如果我设置config.cache_store = :file_store, Rails.public_path + "/cache"行为似乎相同。

在入门 Rails 指南中它说“Rails 将在公共目录中提供任何静态文件,而不是我们从控制器生成的任何动态内容”,但显然情况并非如此。

该页面似乎仅缓存在内存中,并且未使用磁盘上的文件...谁能解释这里发生了什么以及如何在磁盘上缓存页面?将所有页面缓存在内存中是不切实际的。谢谢!

0 投票
0 回答
482 浏览

linux - 如何为一个 inode 指定多个 address_space 结构?

假设两个不同的进程分别打开两个不同的文件。通常,他们每个人都有自己的inode,每个inode都有自己的struct address_space(这是记住页面缓存页面在内存中的位置的人)。

但是,假设我知道这些文件最初是相同的。我想想出一种尽可能智能共享缓存的方法。

我正在考虑这些策略:

  1. 向结构中添加一个新字段struct address_space:指向“父级”的指针。然后,每当我查找现有页面时,我也会查看父页面(如果存在)。因此,每当我写入页面时,我都需要将页面出错并将其 COW 放入主地址空间。这两个文件将共享共同的父级。

  2. 将每个相关的集合分组struct address_space到一个链表中。每当我查找现有页面时,搜索整个链接列表。但是,在这种情况下,不允许在朋友的 address_space 上“找到”脏页。换句话说,如果一个页面变脏了,它就不能再用作备份了。在这种情况下,如果有人曾经将数据写入文件,我需要解除 address_spaces 的关联。我还需要某种 COW 行为来维持这一点。

谁能告诉我:

  • 这些想法中的一个或两个都是合理的吗?
  • 我应该特别注意哪些事情?

作为参考,我正在进行自定义内核破解以节省内存,因为在我的系统上打开了多个相同的文件(但不同的 inode = 不共享页面缓存)。

编辑:第三个想法:

  • 保留“相关”页面缓存的链接列表,address_space然后每次我们从磁盘读取时,更新每个address_space打开的结构。打开一个新的相关文件将不得不导致一个大的页表复制事情发生,除了跳过任何脏页。
0 投票
1 回答
4238 浏览

codeigniter-2 - Codeigniter 网页缓存和数据库缓存?

我还是 Codeigniter 框架的新手。今天我阅读了有关数据库缓存http://codeigniter.com/user_guide/database/caching.html和网页缓存http://codeigniter.com/user_guide/general/caching.html的内容。

一旦页面视图已经在缓存中,如果数据库缓存有意义,我会有点困惑。所以如果页面在缓存中,它无论如何都不会进入数据库。

我在以下场景中看到的唯一一点:如果我从 db 加载 30 个结果,然后使用 php 对结果进行洗牌并从数组 10 结果中提取。下次当页面缓存被删除时,我仍然会有 30 个来自 db 的结果在缓存中,但是这次将这 30 个结果洗牌后会有不同的结果。

我是否遗漏了一些东西,当使用数据库缓存时是否还有其他情况会在使用页面缓存时带来任何好处?

0 投票
1 回答
72 浏览

asp.net-mvc-3 - StackOverflow 的 Ask Form 机制?

我们都看到,

当我们在 StackOverflow 上写一个问题时,在我们发布我们的问题之前。如果我们关闭浏览器或刷新它,我们仍然可以看到,我们在表单中输入的所有内容仍然可用。

它是如何编程的。

我想在我的应用程序中做类似的事情。

我可以考虑存储两个会话变量

  1. 标题 - 问题
  2. 正文 - 消息

以最短时间间隔更新会话变量并在单击“发布您的问题”按钮时终止变量

如果这是 StackOverflow 处理这个问题的方式,我不肯定。

有人可以建议最好的方法吗?

我的平台是 ASP.Net C# MVC 3.0

0 投票
1 回答
2950 浏览

ruby-on-rails - Rails 页面缓存 expires_in

在任意 Rails 控制器中,下面的行会起作用吗?

我使用 memcached,但对页面缓存的工作方式感到困惑。它是使用文件系统还是使用 memcached 将页面放入内存中?

编辑:它似乎使用文件系统。那么有没有一种简单的方法可以在给定时间后自动从缓存中释放页面,还是我必须写一个清扫器?

0 投票
1 回答
120 浏览

ruby-on-rails - 什么时候不使用页面缓存?

摘自Rails 文档

页面缓存的问题之一是您不能将它用于需要以某种方式限制访问的页面。[...]

“限制访问”到底是什么意思?你能给我一些例子吗?

例如,它指的是 Wiki 和论坛吗?

0 投票
1 回答
81 浏览

ruby-on-rails - ActionController 缓存在开发和测试环境中不起作用

我有这个控制器:

action_controller.perform_caching为每个环境启用。

在生产环境中,一切都按预期运行,缓存页面存储在 public/cache/index.html 中,但对于开发和测试,index.html 的缓存版本在每次请求时都会重新生成。

我正在使用 Rails 3.1.8

0 投票
1 回答
626 浏览

postgresql - Linux Page Cache Replacement

I have two PostgreSQL databases named data-1 and data-2 that sit on the same machine. Both databases keep 40 GB of data, and the total memory available on the machine is 68GB.

I started data-1 and data-2, and ran several queries to go over all their data. Then, I shut down data-1 and kept issuing queries against data-2. For some reason, the OS still holds on to large parts of data-1's pages in its page cache, and reserves about 35 GB of RAM to data-2's files. As a result, my queries on data-2 keep hitting disk.

I'm checking page cache usage with fincore. When I run a table scan query against data-2, I see that data-2's pages get evicted and put back into the cache in a round-robin manner. Nothing happens to data-1's pages, although they haven't been touched for days.

Does anybody know why data-1's pages aren't evicted from the page cache? I'm open to all kind of suggestions you think it might relate to problem.

This is an EC2 m2.4xlarge instance on Amazon with 68 GB of RAM and no swap space. The kernel version is:

Edit-1:

It seems that there is no NUMA configuration:

Edit-2:

I used page-types tool in Linux kernel source tree to monitor page cache statuses. From the results I conclude that:

0 投票
1 回答
858 浏览

linux - Linux 页面缓存状态

通过使用Linux 内核源代码树中的页面类型工具,我可以在我的操作系统中列出页面缓存状态。如:

参考,最新,lru,mappedtodisk

引用的,最新的,lru,活动的,私有的

源代码中有完整的列表:

但我找不到任何关于它们的含义、内核如何使用它们等的信息。我怎样才能找到有关页面缓存类型的更多信息?

0 投票
1 回答
1592 浏览

ruby-on-rails - 带有 BRCOBRANCA 的 ActionController::Base:Class 的未定义方法“page_cache_extension”

我在 Ubuntu 上使用 Ruby 1.8.7 执行 Rails 3.2.1。当我在控制台上执行“rails s”时,会出现此消息:undefined method `page_cache_extension' for ActionController::Base:Class

我尝试评论这些行:

config.action_view.debug_rjs = true

config.action_controller.perform_caching = false

但不要为我工作。

我尝试运行的项目是这个-> https://github.com/kivanio/brcobranca_exemlo用于生成格式为 PDF 的巴西文档。

有人有什么想法可以帮助我解决这个问题吗?

感激。