哪种缓存技术用于apache php

时间:2014-09-01 07:21:54

标签: php mysql caching

目前我正在为我的网站使用共享托管域。但是我们目前在其中一个表中大约有11,00,000行。所以它花了很多时间来加载网页。所以我们要实现数据库缓存技术像我们网站的APC或memcache。但是在共享域我们没有那些设施可用,我们只有eaccelerator.But eaccelerator不缓存db调用,如果我没有错。所以考虑所有这些点我们想要移动到VPS和这种情况。我们需要使用APC或memcache来减少页面加载时间的数据库缓存技术...请指导VPS和更好的两种缓存技术

4 个答案:

答案 0 :(得分:0)

我们有类似的网站,我们使用APC

APC将缓存操作码以及生成的html。这有助于避免不必要的页面点击

您还应该在mysql上启用缓存以缓存查询结果

答案 1 :(得分:0)

我有一个任务,我需要从数据库表中获取超过100.000条记录的行。它是一个可滚动的页面。所以我所做的是获取前50个记录并在第一次调用中缓存下一个50。在向下滚动事件时,我写了一个ajax请求来检查数据是否在缓存中可用;如果不是我从数据库中取出它并缓存下一个50.它工作得很好,解决了不方便的加载时间。

如果你有类似的情况,你可以从这种方法中受益。

ps:我使用了memcache。

答案 2 :(得分:0)

从您的评论中我认为您正在进行LIKE %..%查询,并希望对结果进行分页。首先,调查FULLTEXT指数是否适合您,因为它们应该表现更好。如果这不是一个选项,您可以像这样添加一个简单的缓存:

  1. 将每个唯一搜索字词视为ID,即如果您的网址中包含..?search=foobar,则“foobar”是结果集的ID。保留所有链接,例如..?search=foobar&page=2
  2. 如果结果集尚不存在(见下文),请创建它:
    1. 使用慢查询查询数据库。
    2. 将所有结果放入数组中。不要过度,你不想存储数百兆字节。
    3. 为每个查询创建一个唯一的文件名,例如sha1($query),或者sha1(strtolower($query))
    4. serialize数据并将其存储在文件中。
  3. 从文件unserialize获取数据,显示与所请求页面对应的数组部分。
  4. 有时,删除旧的缓存结果。您可以使用类似if (rand(0, 100) == 1) ..的内容来执行此操作,这将平均每100次查询运行清理作业。在服务器负载和数据新鲜度之间取得平衡。缓存失效是一本关于BTW可以写的书籍的主题。
  5. 这是一个简单的穷人的缓存实现。这不是很好,但如果你没有其他任何东西可以使用,那么比一遍又一遍地运行慢查询更好。

答案 3 :(得分:-1)

APC是备用PHP缓存,仅适用于PHP。而Memcahced将使用任何语言独立工作。