<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="0">
<%
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragrma","no-cache");
response.setDateHeader("Expires",0);
%>
---------------------------割了麻花藤的小JJ------------------------------
补充转载(2017年01月05日00:49:15)
开发过web app的同学,特别是前端人员,都碰到这烦人的事情,JS或CSS代码改变,可手机浏览器怎么刷新都不更新,手机浏览器的缓存特别恶劣。
所以今天贴个方法解决这问题。记得,本地调试的时候贴上,上线后要删除哦,免得访问者浏览体验慢。
代码:
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
把上面的代码贴到HEAD里面即可。
顺便贴个缓存的资料:
1.概念
Cache-control用于控制HTTP缓存(在HTTP/1.0中可能部分没实现,仅仅实现了Pragma: no-cache)
数据包中的格式:
Cache-Control: cache-directive
cache-directive可以为以下:
request时用到:
| "no-cache"
| "no-store"
| "max-age" "=" delta-seconds
| "max-stale" [ "=" delta-seconds ]
| "min-fresh" "=" delta-seconds
| "no-transform"
| "only-if-cached"
| "cache-extension"
response时用到:
| "public"
| "private" [ "=" <"> field-name <"> ]
| "no-cache" [ "=" <"> field-name <"> ]
| "no-store"
| "no-transform"
| "must-revalidate"
| "proxy-revalidate"
| "max-age" "=" delta-seconds
| "s-maxage" "=" delta-seconds
| "cache-extension"
部分说明:
根据是否可缓存分为
Public 指示响应可被任何缓存区缓存。
Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的
部分响应消息,此响应消息对于其他用户的请求无效。
no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换)
根据什么能被缓存
no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
根据缓存超时
max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以
接收超出超时期指定值之内的响应消息。
Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的
效果。但是如果同时存在,则被Cache-Control的max-age覆盖。
格式:
Expires = "Expires" ":" HTTP-date
例如
Expires: Thu, 01 Dec 1994 16:00:00 GMT (必须是GMT格式)
2.应用
通过HTTP的META设置expires和cache-control
<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta http-equiv="Expires" content="Mon, 20 Jul 2009 23:00:00 GMT" />
上述设置仅为举例,实际使用其一即可。这样写的话仅对该网页有效,对网页中的图片或其他请求无效,并不会做任何cache。
这样客户端的请求就多了,尽管只是检查Last-modified状态的东西,但是请求一多对浏览速度必定有影响。
如果要对文件添加cache可以通过apache的mod_expire模块,写法为
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 days"
</IfModule>
记得ExpiresActive设为On,我起先没设置On,似乎怎样YSlow都查不到缓存机制。这样添加的话就是默认所有的。
如果要针对个别MIME类型则可以:
ExpiresByType image/gif "access plus 5 hours 3 minutes"
见 Apache Module mod_expires
另外,当点击浏览器上的刷新,客户端发送的请求中均是max-age=0,表示validate操作,发送请求到服务器
要求检查cache,再更新cache,一般得到的是304 Not Modified,表示没变动。
分享到:
相关推荐
1. **JSP页面结构**: JSP页面由HTML或XML标记、脚本元素和指令组成。脚本元素包括声明、脚本let和表达式,用于插入Java代码。指令则用于配置页面,如`<%@ page %>`, `<jsp:include>`等。 2. **JSP生命周期**: JSP...
- **指令元素**:如`<%@ %>`, 用于引入Java类库或设置页面属性。 - **动作元素**:如`<jsp:include>`、`<jsp:forward>`,用于包含其他页面或转发请求。 **2. 数据库设计** - **MySQL数据库**:作为后台存储,保存...
在JSP中,我们可以使用Servlet或者JSP内置对象如`request.getParameter()`来获取这些参数,并结合SQL的`AND`或`OR`操作符构建查询语句。例如: ```jsp String author = request.getParameter("author"); String ...
首先,Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页的技术。在这个功能中,Ajax负责在用户输入时异步地向服务器发送请求,获取匹配的下拉提示数据,而...
Servlet负责处理服务器端逻辑,JSP则用于创建动态网页,结合HTML、CSS和JavaScript,能够构建出用户友好的交互界面。 二、图书管理系统架构 1. 前端:使用HTML和CSS构建用户界面,提供美观的布局和交互体验。JSP则...
探索HQL(Hibernate Query Language)和性能优化,包括一级缓存、二级缓存和查询缓存。 9. **Spring**:Spring是核心的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)框架,还提供...
- 如缓存策略、日志级别等。 **3.4 事务** - **3.4.1 JDBC API操作事务** - 使用JDBC API进行事务的开启、提交和回滚。 - **3.4.2 Hibernate API操作事务** - 使用Hibernate API来进行更高级的事务管理。 **...
- 在JSP Model1中,所有的业务逻辑都放在JSP页面中,这种方式不利于代码的维护。而在JSP Model2中,引入了控制器的概念,将业务逻辑分离出来,提高了系统的可维护性和可扩展性。 **2.2 Struts的体系架构** - ...
- **JSP Model 1**:使用JSP页面同时作为控制器和视图,模型数据直接嵌入JSP中。 - **JSP Model 2**:使用Servlet作为控制器,JSP仅作为视图,数据通过Action对象传递。 ##### Struts体系架构 Struts的核心组件...
在本例中,要将`a.jsp`页面中的`loginName`参数传递到`b.jsp`页面,需要使用`<jsp:param>`标签来指定参数名和值。选项中的`<jsp:getParam>`并不存在,而`<jsp:param>`才是正确的标签。 #### 20. 计算机逻辑判断能力...
options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,其中encoding指定包含页面时所用的解码集,而parse指定被包含文件是否作为FTL文件来解析,如果省略了parse选项值,则该选项默认是true. ...
最后,压缩包"my12306"可能包含了该项目的所有源代码和资源文件,包括Servlet、JSP页面、数据库配置文件、CSS样式表和JavaScript脚本等。开发者可以通过查看这些文件,学习和理解整个系统的实现细节。 总之,这个...
- **其他重要属性配置**:如缓存策略、方言设置等。 - **事务** - **JDBC API操作事务**:通过JDBC API手动管理事务。 - **Hibernate API操作事务**:利用Hibernate提供的Transaction API来管理事务。 - **OR...
通过 computer browsers or mobile devices. The backend code technology chooses PYTHON, which is one of the most commonly used programming languages at present, ensuring the stability and smoothness of ...
项目可能使用JSP来渲染搜索结果页面,将数据以用户友好的格式展示。 - **MVC(Model-View-Controller)架构**: MVC是一种常见的设计模式,用于分离业务逻辑、数据模型与用户界面。SearchEngineWeb可能采用了这一...
此外,Java在Web应用开发中也有广泛的应用,比如使用Spring Boot框架来构建后端服务,以及Thymeleaf或JSP用于前端页面渲染。 项目文件名"**guli-master**"表明这是项目的主分支,很可能包含了项目的核心代码和资源...