Mysql请求缓存

时间:2015-06-20 11:41:19

标签: php mysql caching

我已经从MySQL创建了一个小的PHP代码来计算特定的表。

如何将其压缩到静态页面,以便每次加载页面时都不发出请求?

例如,我可以将其转换为每天刷新一次的静态HTML吗?

1 个答案:

答案 0 :(得分:1)

压缩意味着您可以减少保存或传输内容所需的存储空间。但根据您的问题,您想要缓存内容。缓存意味着您临时存储生成成本高昂的数据,以便下次可以更快地访问它并使用更少的资源。此可以与压缩相结合。例如,在静态页面被保存之前压缩静态页面,这样它将比没有压缩时占用更少的存储空间。但是这将比你看起来更详细。

缓存有不同的方法和技术。它取决于您的应用哪一个是最好的。通常,像清漆https://www.varnish-cache.org/这样的HTTP加速器将成为紧固件。简短解释一下,varnish将侦听端口80并接受http请求。您的网络服务器(例如nginx,apache,iis)将侦听另一个端口(可能是81)。对于每个请求,清漆将在其缓存中查找,该缓存可以位于磁盘上或内存中。如果请求的站点位于缓存中,则清漆将在几百毫秒或更快的速度内快速提供,具体取决于您的应用和基础架构。当它尚未缓存时,他将从后端服务器获取页面,将其保存在缓存中以获取进一步的请求并将其传递给用户。一般来说,这与使用php在静态文件中存储内容的结果相同,但速度要快得多,因为使用php需要花费时间。

但是,当您有大量特定于用户的请求时,此类解决方案可能很难或甚至效率低下。例如,当用户可以登录时,您无法轻松缓存这些请求:页面与每个用户不同,因此可能会对内容进行访问限制。当您有这样的场景时,仅对未登录的用户使用varnish是有意义的。

但是你应该注意到这与你在标题中提到的 MySQL 缓存无关! MySQL具有查询缓存本身https://dev.mysql.com/doc/refman/5.1/en/query-cache.html,这是另一回事。这只会缓存数据库查询。还有其他类似的方法来缓存页面的各个部分。与xcache http://xcache.lighttpd.net/一样,它有一个全局存储,您可以在其中保存数据,这将花费大量资源来生成。

请记住,这些内容与缓存整个页面的级别不同。它们会加速您的网站,但不会像清漆那样多。根据您的问题,您可能需要像清漆一样的东西。如果我错了,您应该更具体,并使用有关要引入缓存的系统的详细信息编辑您的问题。