在动态页面里象静态页面一样控制整个网页的缓存和更新

转载 2015年11月19日 14:42:48

静态页面我们都知道,WEB服务器在发回文件内容时会附带一个Last-Modified头信息,把静态文件的最后修改时间存储在里面,这样当下次浏览器请求该文件时,会把得到的这个Last-Modified头信息里的时间存在If-Modified-Since里一起发送给服务器,告诉服务器本地缓存的最后修改时间,当服务器接收到有If-Modified-Since时间信息的请求时,会先判断文件的最后修改时间是否比这个时间晚,晚就说明有更新,就会重发文件内容,并附带最新的Last-Modified头信息给客户端,如果时间相等或者比这个时间早,那就说明没有更新,缓存完全同步,就会直接发回一个304 Not Modified状态码,并且停止重发文件内容,可以节省不必要的数据传输。

 

  以上是静态页面的缓存和更新控制机制,一般这一切都是由WEB服务器直接包办处理的,完全不需要用户干预。但动态页面就没这么幸运了,由于对动态页面的请求,都是由WEB服务器转接给特定的页面处理程序来完成,而且不会包办其缓存和更新的策略问题,所以这些控制就必须有程序员自己来完成了。然而更不幸的是,动态页面处理程序自己是无法自动处理缓存的,特别是整页面级别的缓存,我们可以在代码里缓存一个变量以便于下次调用,但仍然要执行很多程序代码,能不能像静态页面那样,给客户端一个Last-Modified头信息,下次请求时再判断这个时间和数据的更新时间,以便决定是否重复处理和发送数据?

 

  从以上分析来看这是完全可行的,不过需要对脚本程序做特殊处理,也就是需要一个逻辑来规范这个更新的检测,当然这里不是重点讨论这个了。因为客户端接受最后修改时间完全是依靠Last-Modified头信息,所以只要动态脚本能在发回内容的时候也输出一个时间作为判断依据的话,那么下次客户端请求同一个页面(准确的说应该是同一个URL地址)的话,会把接收到的Last-Modified头信息里的时间也附加到If-Modified-Since请求过来。到了动态页面这里,我们就可以获取到这个请求附带的最后修改时间,然后先判断时间点之后是否有新处理的数据,没有新数据的话,我们就直接结束当前脚本,就可以节省服务端资源。当然结束脚本之前,需要发挥一个304的状态码,因为要让客户端确认使用缓存的话,也必须依赖这个状态码,所以只需要用动态脚本发回一个的304 Not Modified头信息就可以了,不但节省了服务器脚本的执行资源,还节省了流量,可谓一举两得,而且应用形式更灵活更可控。

举报

相关文章推荐

浏览器缓存-控制刷新-cdn问题

浏览器缓存 用户从浏览器(或者 App 客户端)请求一个 URL 时,浏览器首先会判断该资源曾经是否被请求过是否被缓存过,如果该资源在客户端被缓存了,就会直接返回给客户端。这是浏览器的缓存。目前...
  • gnicky
  • gnicky
  • 2016-02-24 19:48
  • 1364

关于web开发中静态资源缓存机制的总结

http://www.cnblogs.com/_franky/archive/2012/07/05/2577141.html

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

在动态页面里象静态页面一样控制整个网页的缓存和更新

静态页面我们都知道,WEB服务器在发回文件内容时会附带一个Last-Modified头信息,把静态文件的最后修改时间存储在里面,这样当下次浏览器请求该文件时,会把得到的这个Last-Modified头...

动态页面,静态页面,伪静态页面的区别

我们经常会看到,在地址栏里有一些网址特别长,而且还带有“?”,这样的链接一般是动态链接,其所对应的页面就是动态页面。 在技术上,动态页面具有这些特征: 1,动态页面是以ASP、PHP、JSP、AS...

缓存静态页面

描述:当用户访问一个网站的静态页面的时候,有时会查询数据库,但访问的时候过多,就会对服务器产生很大的压力。因此,对于一些不经常改变的静态页面,就可以查询一次数据库后,缓存在客户端,当客户再次访问的时候...

ob静态页面缓存

index.php <?php header("content-type:text/html;charset=utf-8"); // 1. 连接数据库 $link = @mysql_con...

静态页面制作(一)

一丶概述 这是我实战的第一个静态页面,虽然大多CSS布局是借鉴他人作品,但是从中还是体会到自己动手才能真正学到东西,现将其中几个新学到的CSS知识点记录下来.(注:未使用BootStrap)...

什么是动态页面与静态页面

经常有网站建设公司说我们采用静态页面,不是动态页页,那么什么是静态页面,什么是动态页面,下面我们简单的介绍一下: 静态网页,动态网页主要根据网页制作的语言来区分;静态网页使用语言:HTML(超文本标记...

网站----静态页面与动态页面

静态页面与动态页面 什么是静态网页 使用HTML,XHTML,XML,CSS,JavaScript,Flash等不需要服务器端运算的程序实现的网页。 什么是动态网页 使用ASP...

静态网页和动态网页

静态网页与动态网页的区别在于Web服务器对它处理方式不同。了解这种区别对于ASP概念的理解至关重要。 1、静态网页 静态网页是标准的HTML文件,其文件扩展名是.htm或.html。它可以包含HT...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)