目前我只知道缓存数据的两种方法(我使用PHP,但我认为这同样适用于大多数语言)。
还有其他(可能更好)的缓存方式还是真的这么简单?
答案 0 :(得分:2)
也许您想要更准确地显示您想要缓存的内容。你有这么多机会缓存:
根据我的经验,我敢打赌,在我们开始谈论缓存之前,您的代码可以得到很多改进。例如,考虑一下您的网站导航结构如何以及您控制用户体验的程度。然后使用XDebug等工具检查您的代码。
还要验证您的SQL查询效果如何以及您对表的索引程度如何。然后再次检查您的代码,以寻找机会应用规则“多次阅读但只写一次”
使用像YSlow这样的简单工具来暗示要改进的其他简单方法。再次检查您的代码,寻找将逻辑放入浏览器的机会(通过JavaScript)
答案 1 :(得分:1)
您还可以在内存中缓存更高效。试试memcached。
答案 2 :(得分:0)
Seconding memcached,做得很简单,如果你也需要它可以分配和所有爵士乐
答案 3 :(得分:0)
如果您正在使用Apache,则可以使用mod_rewrite静态缓存您的网页。假设您使用的是PHP,并且您有“/somepage.php”的请求。在.htaccess文件中,您输入以下内容:
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脚本处理,所以现在只需要让您的php脚本将生成的html存储在缓存中。最简单的方法是使用另一个htaccess规则来支持end将几个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);
}
在.htaccess文件中有一些额外的正则表达式,我们也可以开始缓存查询字符串请求,但我会把它作为读者的练习:)