首页 > 编程知识 正文

html设置缓存,html5缓存页面

时间:2023-05-03 23:11:49 阅读:43418 作者:157

我以前介绍过浏览器缓存和HTML脱机缓存,太多反而容易混淆。 今天让我们仔细分辨一下这些缓存各自有什么不同,以及如何使用缓存。

200 from memory cache不访问服务器,直接读取缓存并从内存读取缓存。 此时的数据将缓存在内存中,但在kill过程之后(即浏览器关闭之后),数据不存在。 但是,这种方法只能缓存派生资源

200 from disk cache不访问服务器,直接读取缓存,从磁盘读取缓存。 对于kill进程,数据仍然存在。 用这种方法也只能缓存派生资源

304 Not Modified访问服务器,发现数据未更新,服务器返回此状态代码。 然后从缓存读取数据。

三级缓存原理

先去内存看看,有就直接加载

如果没有内存,请选择并获取硬盘,如果直接加载,则为

如果也没有硬盘,请提出网络请求

加载的资源将缓存在硬盘和内存中

一般图像的浏览流程如下。

访问- 200 -退出浏览器

以及-200(fromdiskcache ) -刷新- 200 (frommemorycache ) ) ) ) ) ) )。

高速APP cache与上述高速缓存略有不同。 脱机缓存。 就是资源可以从硬盘读取,而无需连接到网络。 即使断网用户也可以浏览。

设置浏览器缓存

304是协商缓存还是一次与服务器通信? 若要断开与服务器的通信,请强制浏览器使用本地缓存(cache-control/expires )。

一般来说,使用以下方法设置浏览器缓存:

1、在HTTP元中设置速度和缓存控制

这样写只对该页面有效,对页面中的图像和其他请求无效。

2、apache服务器配置图像、css、js和flash缓存

这主要通过服务器配置来实现,如果使用apache服务器,则可以使用mod_expires模块来实现。

编译mod_expires模块: CD/root/httpd-2.2.3/modules/metadata/usr/local/Apache /凶暴的秋天/apxs-I-a-ccche

首先打开httpd.conf文件,然后找到名为expires的模块。 找到后,删除左侧的#符号,表示要打开此模块,然后重新启动apache服务器

编辑httpd.conf配置:添加以下内容以打开ExpiresActive on

expires default ' access plus1month '

expiresbytypetext/html ' access plus1months '

expiresbytypetext/CSS ' access plus1months '

expiresbytypeimage/gif ' access plus1months '

expiresbytypeimage/JPEG ' access plus1months '

expiresbytypeimage/jpg ' access plus1months '

expiresbytypeimage/png ' access plus1months '

expiresbytypeapplication/x-shock wave-flash ' access plus1months '

expiresbytypeapplication/x-JavaScript ' access plus1months '

# expiresbytypevideo/x-flv ' access plus1months '

3、php等的设置? php

硬件(cache-control : public );

头部(pragma : cache );

$offset=30*60*60*24; //cache 1 month

$expstr='expires3360'.gmdate(d,d M Y H:i:s ',time ) $offset ).' GMT );

硬件($ expstr );

或$seconds_to_cache=3600; $ts=gmdate(d,d M Y H:i:s ),time ) $seconds_to_cache ).' GMT ); header(expires:$ts ); 头部(pragma : cache ); 硬件(cache-control : max-age=$ seconds _ to _ cache );

对于缓存,部署前端代码

问题1 :如果有缓存,如何更新前端代码呢?

可以在资源文件或图像之后添加版本号,如下图所示。

问题2 :但是在对所有文件进行版本号后,我们只更改了一个文件。 其他文件的缓存不是浪费了吗?

为了解决这一问题,可以使用数据摘要请求算法来针对文档获取摘要信息,并将摘要信息与文档内容一一对应。 下图:

这样就解决了这个问题。

问题3 :新问题又来了。 文件的发行怎么办?

1、先配置页面后配置资源:在两者配置的时间间隔内,用户访问页面时,将新页面结构加载旧资源,并将此旧版本资源缓存为新版本。 因此,除非用户访问样式混乱的页面并手动更新,否则页面将继续运行错误,直到资源缓存过期。

2、先配置资源再配置页面:在配置间隔内,拥有资源本地缓存旧版本的用户访问网站。 由于请求的页面是旧版本,因此资源引用保持不变,浏览器直接使用本地缓存。 在这种情况下,页面将正常显示。 但是,如果没有本地缓存或缓存过期的用户访问站点,则会将新版本的资源加载到旧版本的页面中,并导致页面运行错误。 但是,页面展开完成后,此用户的一部分再次访问页面时将恢复正常。

是的,上面的分析想说的是,即使先配置也没有人能做到。 在部署过程中会出现页面混乱的问题。 因此,对于访问量较少的项目,可以让研发同学辛苦,等到半夜偷偷上线,访问静态资源后再定位页面,看起来问题不大。

你怎么解决这些问题?

这个问题从资源的覆盖式公开开始,如果用预定公开的资源覆盖公开的资源,就会有这样的问题。 要解决这个问题,就是实现非覆盖式的释放

关于缓存的方面只有这些。 更棒。 请关注Gxl网的其他相关文章。

相关文章:

HTML如何实现数字聚焦图轮播码?

不会完全处理HTML最后一行的文本显示

用canvas将粒子喷泉制成动画的方法

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。