Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我应该使用什么类型的缓存?_Php_Html_Caching - Fatal编程技术网

Php 我应该使用什么类型的缓存?

Php 我应该使用什么类型的缓存?,php,html,caching,Php,Html,Caching,我有一个分类广告网站,它使用PHP和MYSQL 我有几个页面也使用javascript 我需要知道使用什么类型的缓存来提高网站的性能。。。 有很多像菜单、边栏、背景图片这样的“固定”图片,它们可能可以以某种方式缓存 你知道网络浏览器是否会自动缓存这些图像,或者我是否需要编写一段代码来缓存这些图像 我需要正确方向的指引 还有,有没有一种方法可以缓存大型php函数?就像在windows中打开应用程序时,应用程序会以某种方式被缓存,下次打开应用程序时,如果您没有重新启动计算机,它的打开速度会快得多 谢

我有一个分类广告网站,它使用PHP和MYSQL

我有几个页面也使用javascript

我需要知道使用什么类型的缓存来提高网站的性能。。。 有很多像菜单、边栏、背景图片这样的“固定”图片,它们可能可以以某种方式缓存

你知道网络浏览器是否会自动缓存这些图像,或者我是否需要编写一段代码来缓存这些图像

我需要正确方向的指引

还有,有没有一种方法可以缓存大型php函数?就像在windows中打开应用程序时,应用程序会以某种方式被缓存,下次打开应用程序时,如果您没有重新启动计算机,它的打开速度会快得多


谢谢

如果您使用apache作为Web服务器,可以使用mod_expire在静态内容js、图像、favicon、普通HTML上设置expire HTTP头,这样浏览器在该对象过期之前不会请求该对象。根据您的主机和受众,最好使用akamai服务来托管静态内容图像、css和javascript

为了开始提高服务器端PHP的性能,您必须确定瓶颈。实现这一点的一个好方法是在您的网站上实现一些日志SQL查询,以及获得结果的秒数、查看最多的页面、花费最多时间的函数。您将让它运行几周/几天。分析这一点,您就会知道缓存哪些SQL查询,重构哪些函数

如果您很匆忙,一个快速而肮脏的方法是获取浏览量最大的前10个页面,并将它们缓存在磁盘上。这是可行的,但如果你的网站真的是动态的,并且几乎实时地需要信息,你将不得不经常使缓存失效。如果您的网站中有一些登录/注销过程,也可能会产生问题。另一种方法是缓存这些页面的某些部分,通常生成DB/access的成本更高,处理更复杂

在PHP上可以使用哪些工具来处理此类缓存:

:该工具具有一些缓存功能,以及PHP预编译 :分布式缓存系统 :预编译 :预编译
如果使用apache作为Web服务器在静态内容JS、图像、favicon、普通HTML上设置expire HTTP头,则可以使用mod_expire,这样浏览器在该对象过期之前不会请求该对象。根据您的主机和受众,最好使用akamai服务来托管静态内容图像、css和javascript

为了开始提高服务器端PHP的性能,您必须确定瓶颈。实现这一点的一个好方法是在您的网站上实现一些日志SQL查询,以及获得结果的秒数、查看最多的页面、花费最多时间的函数。您将让它运行几周/几天。分析这一点,您就会知道缓存哪些SQL查询,重构哪些函数

如果您很匆忙,一个快速而肮脏的方法是获取浏览量最大的前10个页面,并将它们缓存在磁盘上。这是可行的,但如果你的网站真的是动态的,并且几乎实时地需要信息,你将不得不经常使缓存失效。如果您的网站中有一些登录/注销过程,也可能会产生问题。另一种方法是缓存这些页面的某些部分,通常生成DB/access的成本更高,处理更复杂

在PHP上可以使用哪些工具来处理此类缓存:

:该工具具有一些缓存功能,以及PHP预编译 :分布式缓存系统 :预编译 :预编译
您可以使用缓存代理,比如。此外,如果您查询的数据变化不大,那么缓存MySQL查询结果可能是一个好主意


另一个答案指出,如果文件上的时间戳不变,静态内容通常会被用户的浏览器缓存。

您可以使用类似缓存代理或某种类型的缓存代理。此外,如果您查询的数据变化不大,那么缓存MySQL查询结果可能是一个好主意


另一个答案指出,如果文件上的时间戳不变,静态内容通常会被用户的浏览器缓存。

对于我最近启动的一个站点,我使用ob_start编写了一些代码,将我的PHP文件缓存到平面HTML。下面是一个例子:

$cacheFile = 'cache/home.html';
$cacheTime = 600;

if (file_exists($cacheFile) && time() - $cacheTime < filemtime($cacheFile)) {
    require $cacheFile;
} else {
    ob_start();

    // Your dynamic code

    $fp = fopen($indexCacheFile, 'w');
    fwrite($fp, ob_get_contents());
    fclose($fp);
    ob_end_flush();
}

该网站已经运行了将近一个月,并且已经产生了大量的流量。上面的代码多次保存了我的服务器。

对于我最近启动的一个站点,我使用ob_start编写了一些代码,将我的PHP文件缓存到平面HTML中。下面是一个例子:

$cacheFile = 'cache/home.html';
$cacheTime = 600;

if (file_exists($cacheFile) && time() - $cacheTime < filemtime($cacheFile)) {
    require $cacheFile;
} else {
    ob_start();

    // Your dynamic code

    $fp = fopen($indexCacheFile, 'w');
    fwrite($fp, ob_get_contents());
    fclose($fp);
    ob_end_flush();
}

该网站已经运行了将近一个月,并且已经产生了大量的流量。以上代码多次保存了我的服务器。

-1用于客户端缓存和性能建议。需要为文件显式设置客户端缓存规则,并且需要权衡将来的缓存需要将资源URL更改为refr
埃什。使用CDN,例如CloudFront与S3等存储。要真正加快速度,请阅读@Orip:感谢您的建议,我编辑了我的答案,以反映客户端缓存和性能建议。需要为文件显式设置客户端缓存规则,将来的缓存需要更改资源URL以刷新,这需要权衡。使用CDN,例如CloudFront与S3等存储。为了加快速度,请阅读@Orip:谢谢你的建议,我编辑了我的答案以反映这些建议