当前位置:首页 » 文件管理 » 服务器页面缓存

服务器页面缓存

发布时间: 2024-07-17 11:23:48

㈠ 浏览器缓存和服务器缓存

一、浏览器缓存

浏览器缓存即http缓存;浏览器缓存根据是否需要向服务器重新发起HTTP请求将缓存过程分为两个部分,分别是 强制缓存 和 协商缓存  。

浏览器第一次请求资源的时候服务器会告诉客户端是否应该缓存资源,根据响应报文中HTTP头的缓存标识,决定是否缓存结果,是则将请求结果和缓存标识存入浏览器缓存中。如下图:

1.强制缓存 :浏览器会对缓存进行查找,并根据一定的规则确定是否使用缓存。

强制缓存的缓存规则?

HTTP/1.0 Expires 这个字段是绝对时间,比如2018年6月30日12:30,然后在这个时间点之前的请求都会使用浏览器缓存,除非清除了缓存。

这个字段的缺点就是只会同步客户端的时间,这就有可能修改客户端时间导致缓存失效。

HTTP/1.1 cache-Control       这个是1.1的时候替换Expires的,它会有几种取值:

public :所有内容都将被缓存(客户端和代理服务器都可缓存)

private :所有内容只有客户端可以缓存, Cache-Control的默认取值

no-cache :客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定

no-store :所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存

max-age=xxx (xxx is numeric) :缓存内容将在xxx秒后失效

比如max-age=500,则在500秒内再次请求会直接只用缓存。

优先性:cache-Control > Expires

如果同时存在,cache-Control会覆盖Expires。

这个字段的缺点就是:

如果资源更新的速度是秒以下单位,那么该缓存是不能被使用的,因为它的时间单位最低是秒。

如果文件是通过服务器动态生成的,那么该方法的更新时间永远是生成的时间,尽管文件可能没有变化,所以起不到缓存的作用。

上图中浏览器缓存中存在该资源的缓存结果,并且没有失效,就会直接使用缓存的内容。

上图中浏览器缓存中没有该资源的缓存结果和标识,就会直接向服务器发起HTTP请求。

2.协商缓存: 浏览器的强制缓存失效后(时间过期),浏览器携带缓存标识请求服务器,由服务器决定是否使用缓存。

服务器决定的规则?

控制协商缓存的字段有 Last-Modified / If-Modified-Since 和 Etag / If-None-Match。

①Last-Modified 是服务器返回给浏览器的本资源的最后修改时间。

当下次再次请求的时候,浏览器会在请求头中带 If-Modified-Since ,即上次请求下来的 Last-Modified 的值,

然后服务器会用这个值和该资源最后修改的时间比较,如果最后修改时间大于这个值,则会重新请求该资源,返回状态码200。

如果这个值和最后修改时间相等,则会返回304,告诉浏览器继续使用缓存。

② Etag 是服务器返回的一个hash值。

当下次再次请求的时候,浏览器会在请求头中带 If-None-Match ,即上次请求下来的 Etag 值,

然后服务器会用这个值和该资源在服务器的 Etag 值比较,如果一致则会返回304,继续使用缓存;如果不一致,则会重新请求,返回200。

二、服务器缓存

上面是一个简单的流程图:

用户1访问A页面,服务器解析A页面返回给用户1,同时在服务器内存上做一定映射,把A页面缓存在硬盘上面

用户2访问A页面,服务器直接根据内存上的映射找到对应的页面缓存,直接返回给用户2,这样就减少了服务器对同一页面的重复解析

服务器缓存和浏览器缓存的区别:

服务器缓存是把页面缓存到服务器上的硬盘里,而浏览器缓存是把页面缓存到用户自己的电脑里

Nginx服务器 

Nginx是一个高性能的HTTP和反向代理服务器。具有非常多的优越性:

在连接高并发的情况下,Nginx是Apache服务器不错的替代品,Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。

Nginx提供了expires、etag、if-modified-since指令来实现浏览器缓存控制。

nginx -s reload#重新加载配置文件 

nginx -s reopen#重新打开log文件 

nginx -s stop#快速关闭nginx服务 

nginx -s quit #优雅的关闭nginx服务,等待工作进程处理完所有的请求

Nginx设置静态文件的缓存过期时间 

location ~.*\.(js|css|html|png|jpg)$ {

  expires 3d;

}

 expires    3d;//表示缓存3天

expires    3h;//表示缓存3小时

expires    max;//表示缓存10年

expires    -1;//表示永远过期。

如果设置为-1在js、css等静态文件在没有修改的情况下返回的是http 304,如果修改返回http 200

对于静态资源会自动添加ETag,可以通过添加etag off指令禁止生成ETag。如果是静态文件,那么Last-Modified值为文件的最后修改时间。

在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。在常用的缓存设置里面有两种方式,都是使用add_header来设置:分别为Cache-Control和Pragma。

location ~ .*\.(css|js|swf|php|htm|html )$ {

  add_header Cache-Control no-store;

  add_header Pragma no-cache;

  }

nginx gzip压缩

使用 gzip 压缩可以降低网站带宽消耗,同时提升访问速度。

主要在nginx服务端将页面进行压缩,然后在浏览器端进行解压和解析,

目前大多数流行的浏览器都迟滞gzip格式的压缩,所以不用担心。

默认情况下,Nginx的gzip压缩是关闭的,同时,Nginx默认只对text/html进行压缩

gzip on;

ersio #开启gzip压缩输出

gzip_http_vn 1.0 ;#默认1.1

#其中的gzip_http_version的设置,它的默认值是1.1,就是说对HTTP/1.1协议的请求才会进行gzip压缩

#如果我们使用了proxy_pass进行反向代理,那么nginx和后端的upstream server之间是用HTTP/1.0协议通信的。

gzip_vary on ;

#和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,

#所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩

gzip_comp_level 6;

#设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大 1-9

gzip_proxied any;

#Ngnix作为反向代理的时候启用

#expample:gzip_proxied no-cache;

# off – 关闭所有的代理结果数据压缩

# expired – 启用压缩,如果header中包含”Expires”头信息

# no-cache – 启用压缩,如果header中包含”Cache-Control:no-cache”头信息

# no-store – 启用压缩,如果header中包含”Cache-Control:no-store”头信息

# private – 启用压缩,如果header中包含”Cache-Control:private”头信息

# no_last_modified – 启用压缩,如果header中包含”Last_Modified”头信息

# no_etag – 启用压缩,如果header中包含“ETag”头信息

# auth – 启用压缩,如果header中包含“Authorization”头信息

# any – 无条件压缩所有结果数据

gzip_types text/html ;#压缩的文件类型

#设置需要压缩的MIME类型,非设置值不进行压缩

#param:text/html|application/x-javascript|text/css|application/xml

gzip_buffers 16 8k; #设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间

#设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间

# param1:int 增加的倍数

# param2:int(k) 后面单位是k

# example: gzip_buffers 4 8k;

# Disable gzip for certain browsers.

gzip_disable “MSIE [1-6].(?!.*SV1)”; #ie6不支持gzip,需要禁用掉ie6

㈡ 如何清除DNS服务器缓存

body{
line-height:200%;font-size:14px;
}
如何清除DNS服务器缓存
有些时候,DNS服务器的配置与运行都正确,但DNS客户机还是无法理喻DNS服务器实现域名解析。造成这个问题的原因可能是DNS客户机或DNS服务器的缓存中有不正确或过时信息,这时需要
清除DNS客户机或DNS服务器的缓存信息。清除方法如下。
①对于DNS服务器的缓存的清除,可以在DNS控制台中,右击DNS服务器图标,在弹出的快捷菜单中选择【清除缓存】命令,如图3-42所示。
②对于DNS客户机的缓存的清除,可在命令行窗口中,在DOS提示符后执行“ipconfig/flushdns”命令,如图3-43所示。

㈢ PHP应用中常用的9大缓存技术

一、全页面静态化缓存



也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms;


一种比较常用的实现方式是用输出缓存:


Ob_start()******要运行的代码*******$content=Ob_get_contents();****将缓存内容写入html文件*****Ob_end_clean();


二、数据缓存


顾名思义,就是缓存数据的一种方式;比如,商城中的某个商品信息,当用商品id去请求时,就会得出包括店铺信息、商品信息等数据,此时就可以将这些数据缓存到一个php文件中,文件名包含商品id来建一个唯一标示;下一次有人想查看这个商品时,首先就直接调这个文件里面的信息,而不用再去数据库查询;其实缓存文件中缓存的就是一个php数组之类;


Ecmall商城系统里面就用了这种方式;




三、查询缓存


其实这跟数据缓存是一个思路,就是根据查询语句来缓存;将查询得到的数据缓存在一个文件中,下次遇到相同的查询时,就直接先从这个文件里面调数据,不会再去查数据库;但此处的缓存文件名可能就需要以查询语句为基点来建立唯一标示;


按时间变更进行缓存


就是对于缓存文件您需要设一个有效时间,在这个有效时间内,相同的访问才会先取缓存文件的内容,但是超过设定的缓存时间,就需要重新从数据库中获取数据,并生产最新的缓存文件;比如,我将我们商城的首页就是设置2个小时更新一次。


四、页面部分缓存


该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示;可以使用类似于ob_get_contents的方式实现,也可以利用类似ESI之类的页面片段缓存策略,使其用来做动态页面中相对静态的片段部分的缓存。


该种方式可以用于如商城中的商品页;


五、Opcode缓存


首先php代码被解析为Tokens,然后再编译为Opcode码,最后执行Opcode码,返回结果;所以,对于相同的php文件,第一次运行时可以缓存其Opcode码,下次再执行这个页面时,直接会去找到缓存下的opcode码,直接执行最后一步,而不再需要中间的步骤了。


比较知名的是XCache、TurckMMCache、PHPAccelerator等。


六、按内容变更进行缓存


这个也并非独立的缓存技术,需结合着用;就是当数据库内容被修改时,即刻更新缓存文件;


比如,一个人流量很大的商城,商品很多,商品表必然比较大,这表的压力也比较重;我们就可以对商品显示页进行页面缓存;


当商家在后台修改这个商品的信息时,点击保存,我们同时就更新缓存文件;那么,买家访问这个商品信息时,实际问的是一个静态页面,而不需要再去访问数据库;


试想,如果对商品页不缓存,那么每次访问一个商品就要去数据库查一次,如果有10万人在线浏览商品,那服务器压力就大了;


七、内存式缓存


提到这个,可能大家想到的首先就是Memcached;memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。


它就是将需要缓存的信息,缓存到系统内存中,需要获取信息时,直接到内森塌存中取;比较常用的方式就是key_>value方式;缓孝


connect($memcachehost,$memcacheport)ordie("Couldnotconnect");$memcache->set('key','缓存的内容');$get=$memcache->get($key);//获取信息?>


八、apache缓存模块


apache安装完以后,是不允许被cache的。云南IT培训http://www.kmbdqn.cn/认为如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要激活mod_cache的模块。此哪圆


㈣ 网站后台缓存 浏览器缓存 服务器缓存这三者有什么区别呢

网站后台缓存 是网站程序产生的一些临时文件,如PHP程序最喜欢。这个文件一般是在网站程序目录。
服务器缓存是服务器为了提升速度而产生的一些临时文件,如gzip的文件,一般是防在特定的目录。
浏览器缓存是用户本地浏览器缓存的网页文件,比如我们第一次打开一个网站速度会慢一些,第二次打开就很快,就是缓存在了本地。

㈤ 怎样 清除服务器缓存

登陆服务器,重新启动应用服务(如IIS、TomCat或JBOSS等)。

㈥ 浏览器缓存是什么

问题一:IE缓存是什么意思.??? 什么是IE缓存,它事实上相当于一个临时仓库。每次打开一个网页,IE会自动创建一份该网页文字和图像的缓存文件(一个银袭临时副本)。当再次打开该页时,IE会检查网站服务器上该页的变化。如果页面变化了,IE从网络上重新下载新的网页。如果该页面没有变化,IE就从内存或硬盘上使用缓存中的临时复本来显示它。
IE会在缓存中保留网页到硬盘,直到各自的缓存占满空间;IE则根据网页的时间和空间来向下取舍。这样设计的目的是为了更快地装载页面。
缓存不仅可以用来加快网页加载速度,而且当需要查看以前丹过的网页时,还可以无需驱动“小猫”,只需单击IE上的“文件→脱机工作”菜单命令,然后单击工具栏上的“历史”按钮,即可方便地进行浏览。

问题二:IE缓存是什么?谢谢! IE缓存是指你使用IE浏览器浏览网站时,从浏览的网站上下载到本地的图片,js文件,css文件,视频、音乐以及网站在操作时候保存的cookie等文件!在你下次浏览该网站时,无需二次下载,直接从本地读取,节约了浏览器对网手蔽站的加载时间!

问题三:浏览器产生的缓存主要是什么 浏览网页图片文字,视频还有就是浏览器下载的东西所产生的

问题四:浏览器缓存的作用是什么? 关于缓存原理,帖个清楚点的给楼主:缓存的概念 浏览器缓存这个概念,对于经常用浏览器来浏览信息的用户来说并不十分陌生。用户也许在用浏览器浏览信息时,经常使用返回和后退的浏览功能,调用你以前阅读过的页面,这时,你会发现显示速度是很快的,其实这些你刚调出来的内容就放在计算机的缓存中,而不需要再次从Internet上重新传输数毕搏州据,这样就会给用户造成了一种访问速度被提高的错觉。 所以浏览器缓存其实就是指在本地使用的计算机中开辟一个内存区,同时也开辟一个硬盘区作为数据传输的缓冲区,然后用这个缓冲区来暂时保存用户以前访问过的信息。既然缓存存在于硬盘之中,那么它肯定是以文件夹的形式出现的。各个不同类型的浏览器都有各个不同的文件夹作为缓存使用,在系统的缺省状态下, IE3.0和IE4.0版本的浏览器缓存文件夹为 \WINDOWS\Temporary Internet Files...缓存的工作原理 缓存按照信息存放的位置可以分成 内存缓存 和 硬盘缓存 。 内存缓存是用于暂时存储本次上网所调用的数据资料的,从Internet上传来的每一个网页信息,在内存缓存中都相应地给予保存一个备份,返回和 向前实际上是将以前的页面从内存缓存中调出来并显示在用户的浏览器窗口中,在内存缓存中存放的网页信息量和内存缓存的大小有关,内存缓存越大,保存的网页信息量就越多。 硬盘缓存是用于保存用户前几次上网时所调用的信息资料,用户从历史记录中调出来的内容其实就是保存在硬盘缓存中的,只要用户开辟的硬盘缓存足够大,将可以保存用户前几个星期甚至几个月前调用过的信息资料。 其它见2#

问题五:清除浏览器缓存和清除缓存有什么区别 不需要什么啊,直接在浏览器里面就有设置的啊,我现在用的手机QQ浏览器,基本上我就是一天清理一次,所以我用它上网啊,看小说和视频啊什么的时候,从来没卡过,还有,手机QQ浏览器可以设置自动清理缓存哦,你可以设置每天一次多方便。

问题六:IE缓存是什么意思? 就是 浏览器为了方便你再次快速访问你访问过的网页,而把你访问过的网页的元素(图片,文字等)暂时保存在硬盘里,你下次访问的时候他就不从远方服务器上下载了而直接从你的硬盘里打开,节省了处理时间。

问题七:网站后台缓存 浏览器缓存 服务器缓存这三者有什么区别呢? 网站后台缓存 是网站程序产生的一些临时文件,如PHP程序最喜欢。这个文件一般是在网站程序目录。
服务器缓存是服务器为了提升速度而产生的一些临时文件,如gzip的文件,一般是防在特定的目录。
浏览器缓存是用户本地浏览器缓存的网页文件,比如我们第一次打开一个网站速度会慢一些,第二次打开就很快,就是缓存在了本地。

问题八:浏览器缓存就是cookie吗? 5分 缓存是指网站站点的一些资源,比如图片,声音,文本等;而cookie只是网站的标识信息,有些网站把密码等信息加密后存在cookie中,方便下次访问可以快速识别,但也面临着被窃取的风险。

问题九:本地缓存和浏览器缓存有什么区别 本地存储(LocalStorage)是以数据库形式永久保存在浏览器的存储空间里,而浏览器缓存(Cache)是保存在指定的缓存目录,缓存过大可能影响浏览器检索速度,需要时常清理。

问题十:ie缓存是什么东西 我没有用ie浏览器怎么还是有ie缓存 为了提高访问网页的速度,Internet Explorer浏览器会采用累积式加速的方法,将你曾经访问的网页内容(包括图片以及cookie文件等)存放在电脑里。这个存放空间,我们就称它为IE缓存。以后我们每次访问网站时,IE会首先搜索这个目录,如果其中已经有访问过的内容,那IE就不必从网上下载,而直接从缓存中调出来,从而提高了访问网站的速度。
ps:ie缓存就是帮助你更快浏览网页的一个东西。
lz没用ie浏览器,但是有很多浏览器用的是ie内核,例如360安全浏览器就是基于ie内核改编的,说白了就是把ie浏览器的外观换的好看一点再加一些别的功能而已,其内核机制还是ie的,所以用它上网一样会产生ie缓存,类似于360安全浏览器的浏览器还有很多,所以没用ie却又ie缓存是可以解释的。
ps:不会产生ie缓存的浏览器比较有名的有谷歌浏览器、火狐浏览器等,但不会产生ie缓存还会产生它自己独立的缓存。

热点内容
诺基亚密码忘了打什么电话 发布:2024-09-17 03:27:09 浏览:555
树深度优先算法 发布:2024-09-17 03:26:58 浏览:472
跳转页源码 发布:2024-09-17 03:13:05 浏览:543
html文件上传表单 发布:2024-09-17 03:08:02 浏览:785
聊天软件编程 发布:2024-09-17 03:00:07 浏览:726
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207
cf编译后没有黑框跳出来 发布:2024-09-17 01:46:54 浏览:249
安卓怎么禁用应用读取列表 发布:2024-09-17 01:46:45 浏览:524
win10设密码在哪里 发布:2024-09-17 01:33:32 浏览:662