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

转载 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头信息就可以了,不但节省了服务器脚本的执行资源,还节省了流量,可谓一举两得,而且应用形式更灵活更可控。

相关文章推荐

静态缓存案例生成一个html页面

1、使 header() 函数前可以有echo代码 Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。 输出控制...

HTML页面实现全方位页面缓存

【1】服务端配置一个Filter,实现对js、css和image的缓存 package cn.com.system.filter; import java.io.IOException; impor...

静态内容实现缓存的七种不同方法

在商业世界中,人们常说“现金为王”。然而,在技术世界里,我们却说“缓存为王”。 从浏览器到应用前端、应用后端、数据库,每一层都可以通过缓存来显著地提高系统的扩展能力,改善系统的响应能力,同时减少系统的...

静态缓存和动态缓存的比较

静态页面的缓存可能有2种形式:其实主要区别就是CMS是否自己负责关联内容的缓存更新管理。静态缓存:是在新内容发布的同时就立刻生成相应内容的静态页面,比如:2003年3月22日,管理员通过后台内容管理界...

静态页面html局部更新数据(ssl局部更新)

apache SHTML网页SSI使用详解 Apache支持include文件解析shtml首先要应该修改Apache配置文件httpd.conf 1. 确认加载include.so模块,将注释去掉:...
  • lba8610
  • lba8610
  • 2014年08月23日 17:33
  • 727

mysql 超大数据/表管理技巧&MySQL 性能优化的最佳20多条经验

在实际应用中经过存储、优化可以做到在超过9千万数据中的查询响应速度控制在1到20毫秒。看上去是个不错的成绩,不过优化这条路没有终点,当我们的系统有超过几百人、上千人同时使用时,仍然会显的力不从心...

ueditor 上传图片去掉高度属性方法

在下面代码中 查找 setsize 参数即可image.html ueditor图片对话框 ...

动态页面转静态页面

  • 2008年04月29日 11:14
  • 3KB
  • 下载

动态页面转静态页面

  • 2016年03月10日 16:57
  • 15KB
  • 下载

JSP中把动态页面转换为静态页面

要自动生成静态页面,用Filter截获jsp请求并先进行预处理,自动生成Html,是个不错的主意。一个很容易想到的方法是在Filter截获Request后,,导向一个Servlet,在这个Servle...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在动态页面里象静态页面一样控制整个网页的缓存和更新
举报原因:
原因补充:

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