Language agnostic 除了文件或数据库之外,还有哪些缓存方法可用?

Language agnostic 除了文件或数据库之外,还有哪些缓存方法可用?,language-agnostic,caching,Language Agnostic,Caching,目前我只知道两种缓存数据的方法(我使用PHP,但我假设大多数语言也会使用PHP) 将缓存保存到文件中 将缓存保存到大型数据库字段 还有其他(也许更好)的缓存方式吗?或者它真的就这么简单吗?您也可以在内存中缓存,这样效率更高。试试。也许您想更精确地显示要缓存的内容。您有所有这些机会来缓存: 访问缓存数据的数据库首先正确调整RDBMS,然后使用一个层委托决策来检测对同一数据的多个查询(例如) 从代码中的循环中提取计算,这样就不会多次计算相同的值。这里是第三种方法:在会话中为用户存储结果 使用扩展(

目前我只知道两种缓存数据的方法(我使用PHP,但我假设大多数语言也会使用PHP)

  • 将缓存保存到文件中
  • 将缓存保存到大型数据库字段

  • 还有其他(也许更好)的缓存方式吗?或者它真的就这么简单吗?

    您也可以在内存中缓存,这样效率更高。试试。

    也许您想更精确地显示要缓存的内容。您有所有这些机会来缓存:

    • 访问缓存数据的数据库首先正确调整RDBMS,然后使用一个层委托决策来检测对同一数据的多个查询(例如)
    • 从代码中的循环中提取计算,这样就不会多次计算相同的值。这里是第三种方法:在会话中为用户存储结果
    • 使用扩展(如)预编译PHP代码。这样,您就不必为每个请求编译相同的PHP代码
    • 发送给用户的页面,确保您设置了正确的元标记(为世界做一件好事,至少在绝对必要时不要使用ETL);或者使动态页面完全静态(具有生成.html页面的批处理过程);或者使用代理缓存,如
    • 预取,我指的是所有这些机会,你可以在用户不按你的方式看的情况下,通过做一些事情来改善用户体验。例如,在HTML文件中预加载IMG标记,对RDBMS进行优化,预计算结果并将复杂的计算存储在数据库中,等等
    根据我的经验,我敢打赌,在我们开始讨论缓存之前,您的代码可以得到很大的改进。例如,考虑一下网站的导航结构和控制用户体验的方式。然后使用类似的工具检查代码

    还要验证SQL查询的执行情况以及表索引的编制情况。然后再次检查代码,寻找机会应用规则“读多次,写一次”


    使用一个简单的工具,比如提示其他需要改进的简单事情。再次检查您的代码,寻找将逻辑放入浏览器的机会(通过JavaScript)

    辅助memcached,做好简单的工作,如果您也需要它,可以进行分布式和所有jazz功能

    如果您使用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规则在所有php请求前添加两个php文件(这可能是个好主意,也可能不是,取决于您的应用程序):

    然后你会这样做:

    pre_cache.php:

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

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

    使用.htaccess文件中的一些额外正则表达式,我们可能也可以开始缓存查询字符串请求,但我将把它作为练习留给读者:)

    您能给这个问题一个合适的标题吗?例如,“缓存数据的最佳方法是什么?”,“除了文件或数据库之外,还有哪些缓存方法可用?”,或类似的方法。