PHP关于服务器缓存的提问

PHP关于服务器缓存的提问,第1张

一、除非你的整个WEB服务器只做一个论坛使用,否则用APPLICATION里面放论坛索引是不科学的。
二、每次都从数据库里面取也无可厚非,数据库有自己查询缓存系统,这样的事情交给数据库去做是对的,老是过份的考虑得这么细,在开发大型系统应用的时候会严重影响效率。
三、如果使用一般数据库,希望进行一下优化,不用每次都在数据库里面取,也是可行的,方法是在编写好每次都从数据库里面取的程序以后,进行如下两个方面的变化:
1是在从数据库里面取数的地方,增加判断是否存在相应的静态html文件,如果存在就从文件里面读,否则从数据库里面取出来,并在输出之前保存到html文件里面,逻辑如下:
$cachefile='静态html文件名html';
if (file_exists($cachefile)) $out_str=file_get_contents($cachefile);
else{ $out_str='';//接着从数据库里面取出内容,并添加到字符串变量$out_str后面
$fp=fopen($cachefile,'w');fputs($fp,$out_str);fclose($fp);
}
echo $out_str;//输出内容
2还需要修改所有针对上面的内容进行delete和update的程序,在修改数据库之后增加删除文件的功能,大致结构是:
$cachefile='静态html文件名html';
delete($cachefile);

提前下载后储存在本地硬盘中

缓存的最根本的目的是为了提高网站性能,减轻频繁访问数据而给数据库带来的压力再进一步,合理的缓存了某种数据形式,还会减轻程序运算时,对CPU带来的压力首先,我们要知道一个最基本的效率规则, *** 作内存中的数据比 *** 作存放在硬盘上的数据是要快N个数量级的 *** 作简单的文本结构的数据比 *** 作数据库中的数据快N个数量级

目前缓存的做法分为两种模式:


第一种模式是内存缓存,缓存数据存放在服务器的内存空间中,这种模式的效率是最高的这里要注意的是:每一个服务器的资源都是有限的,盲目的把所有数据都加在到内存中,将可能会导致服务器资源占用过多,而造成Web服务失败


第二种模式就是文件缓存,缓存数据存放在服务器的硬盘空间中存放格式有很多种类,如:文本格式,XML格式,二进制格式等等这里要注意的是,服务器I/O的处理能力有限,当一次性读取过大数据时(>1M),它并没有想象中那么的高效这个时候就需要你有一个合理的文件结构来解决了但这已经不在我们本次要讲叙的内容范围内了

怎样正确设置缓存


用户无论使用的是哪一种浏览器,正确地设置浏览器的缓存参数将大大提高你的浏览效率,同时也将一定程度上改善你的浏览器的工作性能;但是如果使用不恰当,设置不正确那不但不会提高你的工作效率,反而还能降低计算机的运行速度。不同的浏览器有不同的设置方法:


A、IE40浏览器设置缓存大小的方法如下:


1、首先打开浏览器的 *** 作窗口,然后用鼠标淡季“查看”菜单中的“Internet选项”,程序会打开一个选项对话框。


2、在选项对话框中找到“INTERNET 临时文件”栏,并用鼠标单击该栏右边的“设置”按钮,同样地程序也会打开一个设置框。


3、在设置框中,用户可以直接用鼠标来移动滑动杆即可改变缓存的大小。


4、参数设置好后,单击“应用”按钮使上述设置生效,最后单击“确定”按钮,退出参数设置对话框。


B、IE50浏览器设置缓存大小的方法如下:


1、打开IE50 *** 作窗口,在窗口中用鼠标单击“工具”菜单中的“Internet选项”,屏幕上将出现“Internet选项”对话框。


2、在选项对话框中,单击“常规”标签下的“Internet临时文件”设置栏,并用鼠标单击该栏中的“设置”按钮,程序将会打开一个标题为“设置”的对话框;当然,IE40以上版本的浏览器带有自动清除磁盘缓存的功能,如果用户想在这里节省硬盘的空间,也可以按“删除文件”按钮,来释放出更多的缓存空间,这种删除缓存内容的方式比较彻底。


3、在“设置”对话框上面有四个单选项:


“每次访问此页时检查”单选项表示浏览器将发送一个信息给所要访问的页面的WEB服务器,查问当前访问的信息是否有变动,如没有变动,就从硬盘缓存中直接调用,而且每次访问都要发送信息给WEB服务器进行验证。


“每次启动INTERNET EXPLORER时检查”表示本次上网浏览器将只发送一次信息给WEB服务器进行验证,以后无论信息是否发生变动,都从硬盘缓存中直接调用所要访问的页面的信息。


“自动”单选项表示浏览器将自动检查所要访问的信息最新是否发生变动,如果变动的话,就从INTERNET上重新下载网页,如果没有变动的话,就直接从硬盘中读取数据。


“不检查”单选项表示对要调用的页面信息不进行校验,只要硬盘硬盘上有,就直接从硬盘中调用。弄清楚了上面四个选项后,用户可以根据自己的实际情况进行设定,浏览器默认选择“自动”这一单选项。


4、接着用户可以在“使用的磁盘空间处”用鼠标直接拖动滑动杆来改变缓存的大小,或者直接在后面的文本框中输入具体的数值。如果用户想改变浏览器缓存的位置,例如用户的C盘空间紧张时或者为了使用方便,用户需要把缓存移到其它分区或者把缓存放到一个易 *** 作的地方,这时就可以通过另外选择一个文件夹来作为缓存,在这里用户只要按下“移动文件夹”并指定要新建的文件夹名称就行了。


5、同样地,参数设置好后,单击“应用”按钮使上述设置生效,最后单击“确定”按钮,退出选项对话框。

如果进程和缓存是分离的,那么要区分宕机部分是缓存引起的,还是逻辑引起的。比如采用memcached,如果是逻辑服务器宕机,重启就好了。如果是memcached宕机,可有两种方法选择,一个是根据日志恢复,一个是重新从数据库加载必要的数据进入到缓存。
如果进程和缓存是管理的,当宕机事件发生,一般缓存也被破坏,这种情况下,建议从数据库中加载最常用的或者按照时间排序修改最频繁的数据。

可以
定义:原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。
原理:缓存的工作原理是当CPU要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理;没有找到,就从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在CPU缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。
2 web缓存
扯了这么多,其实web缓存的产生和原理跟上面一样一样的:客户端浏览器在显示一个完整网页前,需要去服务器获取一些必要的数据(js,css,image等),因为浏览器的数据处理和渲染速度很快,而通过网络传输的方式去服务器取数据的过程却很慢(虽然现在网速还算比较快,下载1M的文件都用不了1s,但相较于处理器,这就非常慢了),所以页面显示出来前都有一段时间的白屏,如果每次打开相同的页面,获取相同的资源都要等待一段时间的白屏,作为用户,岂能忍。如果把已经获取过的资源存在本地,下次用的时候就不用从服务器去取了,这样速度就要快很多了。这种机制便是web缓存。
其实web缓存的优点还有很多: - 减轻服务器压力 - 减少数据传输,节省网络带宽和流量 - 缩短页面加载时间,提升用户体验
二、web缓存分类
了解了缓存的由来和原理,下面针对web缓存(以下统一简称缓存)具体介绍一下。缓存是一个抽象的代名词,用以提高访问效率而临时存储副本的机制都可以称之为缓存。我们常说的缓存,根据资源存放位置、具体用途和运行机制不同,一般可以分为:
数据库缓存
服务器缓存
客户端缓存

所谓的缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。

1、通过文件缓存;顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式;

2、内存缓存;也就是创建一个静态内存区域,将数据存储进去,例如我们B/S架构的将数据存储在Application中或者存储在一个静态Map中。

3、本地内存缓存;就是把数据缓存在本机的内存中。

4、分布式缓存机制;可能存在跨进程,跨域访问缓存数据

对于分布式的缓存,此时因为缓存的数据是放在缓存服务器中的,或者说,此时应用程序需要跨进程的去访问分布式缓存服务器。

扩展资料

当我们在应用中使用跨进程的缓存机制,例如分布式缓存memcached或者微软的AppFabric,此时数据被缓存在应用程序之外的进程中。

每次,当我们要把一些数据缓存起来的时候,缓存的API就会把数据首先序列化为字节的形式,然后把这些字节发送给缓存服务器去保存。

同理,当我们在应用中要再次使用缓存的数据的时候,缓存服务器就会将缓存的字节发送给应用程序,而缓存的客户端类库接受到这些字节之后就要进行反序列化的 *** 作了,将之转换为我们需要的数据对象。

我现在是把阿里云的 CDN 直接解析到 OSS 。
每天的 PV , 1 万到 5 万。
然而才用了一个多月就跑了 300+G 流量。 036/GB 。泪。
阿里云的 CDN 实在是太贵了,用峰值带宽的话,根本就不能控制成本啊!万一有个用户 100M 水管,那一天岂不是要付 100 块钱?
所以还不如选一个好一点的 BGP 线路机器反代到 OSS 。
自己用 squid 搭建吗?
如果主站是 >

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/12824524.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-28
下一篇2025-08-28

发表评论

登录后才能评论

评论列表(0条)

    保存