目前我所知道的只有两种方式来缓存数据(I使用PHP但我认为同样将适用于大多数语言)。

  1. 节省的高速缓存文件
  2. 节省的高速缓存的大DB场

是否有任何其他(或许是更好地)方面缓存,或是它真的仅仅是这么简单?

有帮助吗?

解决方案

也许你想要的明确的更准确地说你想要什么到高速缓存。你有这个机会来缓存:

  • 访问的数据库 你在哪里的高速缓存的数据首先正确调整你的数据库,然后用一层委托的决定可以检测到多个查询的数据相同(与 AdoDB 例如。)
  • 提取计算从循环中的代码 所以你不算相同的价值多次。 在这里,你的第三种方法:储存的结果,在本届会议的用户。
  • 预先编译PHP码 与延伸喜欢 APC缓存.这样你没必要汇编相同的PHP code对每一请求。
  • 该页发送给用户 确保你设置权元标记(做一件好事,对世界和不使用ETL至少是绝对必要);或者制作动态网页完全静态的(具有批处理过程生成的。html网页);或者通过使用代理高速缓存喜欢 鱿鱼.
  • 预取 和由此我指的是所有这些机会你必须要提高用户体验,只有通过这样的事情的同时,用户不要看你的方式。例如,预IMG标记在HTML文件、客户化的数据库,用于prefectching,前计算出的结果储存的复杂的计算数据库中,等等。

从我的经验,我敢打赌你,你的代码可以改善很多在我们开始之前谈缓存的东西。考虑,例如,如何以及结构化是导航的网站以及你如何控制的用户经验。然后检查你的代码这样的工具 XDebug.

验证还有你是如何让你SQL查询和你是如何编制索引表。然后检查你的代码再次寻找机会,适用的规则"阅读多次,但是,写的只是一次"

使用一个简单的工具喜欢 YSlow 暗示其他简单的事情,以改善。检查你的代码再次寻找机会,把逻辑的浏览器(通过JavaScript)

其他提示

你也可以高速缓冲存储器,这是有效得多。尝试 缓存.

借调缓存,没有简单的东西好,并可以分配和所有的爵士乐,如果你需要它太

如果你使用Apache,可以使用mod_rewrite静态高速缓存,你的网页。让我们说你正在使用PHP,你有一个请求"/somepage.php".在你的.要你把文件如下:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^$ # let's not cache urls with queries
RewriteCond %{REQUEST_METHOD} ^GET$ # or POST/PUT/DELETE requests
RewriteCond static_cache/%{REQUEST_URI} -s # Check that this file exists and is > 0 bytes
RewriteRule (^.*$) static_cache$1 [L] # If all the conditions are met, we rewrite this request to hit the static cache instead

如果你的缓转空,该请求是由php script像往常一样,所以现在这是一件简单的事做您的php script商店的所得html在缓存。最简单的方法就是采用的另一个要规则来预先准备结束追加几php文件的所有php的请求(这可能会或可能不是一个好主意,根据应用程序):

php_value auto_prepend_file "pre_cache.php"
php_value auto_append_file "post_cache.php"

然后你会做这样的事情:

pre_cache.php:

ob_start();

post_cache.php:

$result = ob_get_flush();
if(!$_SERVER['QUERY_STRING']) { # Again, we're not caching query string requests
  file_put_contents("static_cache/" + __FILE__, $result);
}

一些额外的经常表达的。要文件,我们或许可以开始缓存串查询请求作为好,但是我会离开,作为一个运动对于读者:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top