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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: H5 的更新版本会导致缓存的出现,此时可以通过伪静态的方式来配置。 伪静态主要通过在服务器端的配置,实现对 URL 的重写,使得 URL 看起来更像静态页面,但实际上是动态生成的。在 H5 页面中,通过配置伪静态,可以避免缓存的问题。 具体实现方法因服务器类型的不同而有所差别,例如在 Apache 服务器中,可以通过在 .htaccess 文件中配置 RewriteRule 规则来实现伪静态。 常见的配置方法如下: ``` RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] ``` 以上代码表示,当请求的文件不是实际存在的文件或目录时,将请求重写到 index.php 文件中。 ### 回答2: H5 更新版本后的缓存问题是指当网站或应用程序的代码发生更新时,浏览器会根据之前的缓存来加载旧版本的代码,而不是加载最新的代码。这可能导致用户看到旧版本的页面或功能失效。 为了解决这个问题,可以通过伪静态来配置缓存。伪静态是指服务器动态生成的内容以静态文件的形式返回给浏览器,可以有效减少服务器的负载,并减少响应时间。 在配置伪静态时,可以通过以下方式来实现缓存更新: 1. 在应用程序的主页或入口页添加一个版本号或时间戳的参数,例如:http://example.com/index.html?v=1.0。 2. 在服务器上设置缓存控制的响应头,告诉浏览器缓存静态资源的时间。可以使用 Cache-Control 或 Expires 来设置缓存的时间。例如,设置 Cache-Control:max-age=86400 表示缓存一天。 3. 在服务器配置文件中,使用 .htaccess 文件(Apache 服务器)或者 web.config 文件(IIS 服务器)来设置伪静态规则。通过设置规则,可以让服务器根据 URL 中的参数来判断是否返回缓存静态文件。 4. 当应用程序的代码有更新时,修改主页或入口页的版本号或时间戳,并重新发布到服务器上。 5. 当用户访问网站或应用程序时,服务器会根据 URL 中的版本号或时间戳参数判断是否返回缓存文件。如果参数改变了,服务器就会返回最新的静态文件给浏览器,确保用户看到最新的页面。 通过以上步骤,可以通过伪静态来配置 H5 缓存,确保用户访问网站或应用程序时加载最新的代码,提高用户体验。 ### 回答3: H5更新版本后具有缓存功能,这个功能旨在提高网页加载速度和用户体验。然而,有时候这个缓存功能会导致网页更新内容无法立即显示。为了解决这个问题,我们可以通过配置伪静态来解决。 首先,我们需要了解伪静态是什么。伪静态是一种技术,将动态生成的网页内容转化为静态页面,以提高网页的加载速度和性能。在h5中,我们可以通过配置服务器的规则,将某些页面进行伪静态化处理,使得这些页面在加载时不会受到缓存的影响。 首先,我们需要在服务器上配置伪静态规则。具体的配置方法根据不同的服务器而有所不同。一般来说,我们可以使用htaccess文件来配置Apache服务器的伪静态规则,或者使用nginx.conf文件来配置Nginx服务器的伪静态规则。 接下来,我们需要制定伪静态规则。一般来说,我们可以通过配置文件中的正则表达式来匹配URL,并将动态生成的页面的URL重写为静态页面的URL。这样,当访问这些页面时,服务器将返回已经生成好的静态页面,而不是重新生成页面内容。 最后,我们需要上传和部署伪静态配置文件到服务器上,并重启服务器以使配置文件生效。这样,当H5页面更新后,通过伪静态配置的页面将不再使用缓存,而是直接加载最新的内容。 总结而言,通过配置伪静态规则可以解决H5更新版本后的缓存问题。然而,具体的配置方法需要根据服务器的不同而有所不同。因此,在实际操作中需要参考服务器提供的文档和指南,并进行相应的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值