首页 > 代码库 > 前端工程师基础培训_问答(139邮箱)
前端工程师基础培训_问答(139邮箱)
响应头部Cache-Control:max-age=86400,所以响应头部会缓存一天。
第(2)题:
第一次请求如下:
有缓存之后再刷新:
1.概念
Cache-control 用于控制HTTP缓存(在HTTP/1.0中可能部分没实现,仅仅实现了 Pragma: no-cache)
Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的效果。但是如果同时存在,则被Cache-Control的max-age覆盖。
2格式
Cache-control:
数据包中的格式:
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:
数据包中的格式:
Expires = "Expires" ":" HTTP-date
例如
Expires: Thu, 01 Dec 1994 16:00:00 GMT (必须是GMT格式)
3.应用
通过HTTP的META设置expires和cache-control
第(4)题:
在地址栏后加上?v=‘版本号‘。
因为http请求时,如果访问的路径不变,而客户端缓存中又有该文件时,浏览器会直接调用缓存中的文件,这样的话,即使服务端的内容变化了,但是客户端仍然有可能显示的是旧文件,而加上新的版本号以后,浏览器会认为这是一个新的访问地址,会重新下载最新版本的文件。从而会强制浏览器更新。
二、实现写信并发送邮件功能代码如下:
index.html页面(写信页)
1 <html> 2 <head> 3 <title>写邮件</title> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <link type="text/css" rel="stylesheet" href="../css/main-index.css"> 6 <script type="text/javascript" src="../js/createAjax.js"></script> 7 </head> 8 <body> 9 <table>10 <tr><td colspan="2" class="title">139邮箱发邮件</td></tr>11 <tr>12 <td>收件人:</td>13 <td>14 <input type="text" id="receiver" onFocus="focusEvent()" onBlur="blurEvent()" value="example@139.com"/>15 16 <div id="reminder">17 18 </div>19 </td>20 </tr>21 <tr>22 <td>主 题:</td>23 <td><input type="text" id="theme"/></td>24 </tr>25 <tr>26 <td>内 容:</td>27 <td><textarea cols="50" rows="20" id="content"></textarea></td>28 </tr>29 <tr>30 <td></td><td><input type="button" value="发送" onClick="post();"/></td>31 </tr>32 </table>33 34 </body>35 </html>
createAjax.js代码如下:
1 //创建ajax的兼容所有浏览器的httpRequest对象 2 function createXMLHttpRequest(){ 3 var request = false; 4 //一般先判断非IE浏览器 5 //window对象中有XMLHttpRequest存在就是非IE,包括(IE7,IE8) 6 if(window.XMLHttpRequest){ 7 request=new XMLHttpRequest();//非IE以及IE7,IE8浏览器 8 9 if(request.overrideMimeType){ 10 request.overrideMimeType("text/xml");//重置mime类型 11 } 12 13 //window对象中有ActiveXObject属性存在就是IE浏览器的低版本 14 }else if(window.ActiveXObject){ 15 16 var versions=[‘Microsoft.XMLHTTP‘, ‘MSXML.XMLHTTP‘, ‘Msxml2.XMLHTTP.7.0‘,‘Msxml2.XMLHTTP.6.0‘,‘Msxml2.XMLHTTP.5.0‘, ‘Msxml2.XMLHTTP.4.0‘, ‘MSXML2.XMLHTTP.3.0‘, ‘MSXML2.XMLHTTP‘];//各种IE浏览器创建Ajax对象时传递的参数 17 18 for(var i=0; i<versions.length; i++){ 19 try{ 20 request=new ActiveXObject(versions[i]);//各个IE浏览器版本的参数不同 21 22 if(request){ 23 return request; 24 } 25 }catch(e){ 26 request=false; 27 } 28 } 29 } 30 return request; 31 } 32 33 function post(){ 34 var ajax = createXMLHttpRequest(); 35 var sid = location.href.match(/sid=([^?#&]*)[?#&]?/)[1]; 36 var receiver = document.getElementById("receiver").value; 37 var theme = document.getElementById("theme").value; 38 var content = document.getElementById("content").value; 39 var account = document.cookie.match("(^|)Login_UserNumber=([^;]*)(;|$)")[2]; 40 console.log(receiver); 41 console.log(theme); 42 console.log(content); 43 console.log(account); 44 45 var data = http://www.mamicode.com/[ ‘
main-index.css文件如下:
body{ font-family:"微软雅黑"; color:black;}table{ margin:auto;}table tr td.title{ text-align:center;}#receiver{ color:gray;}#reminder{ float:right; color:red;}
readMe.txt
看效果之前你需要这样做
1、先用fiddler挂载以下几个页面:
css/main-index.css
html/index.html
js/createAjax.js
2、然后进入139登录首页,登录账号即为发件人,发件人账号从cookie中获取。
3、写邮件时,需要填写收件人、主题以及邮件内容。
4、收件人没有填写时,默认是"example@139.com",收件人格式不包含“@139.com”格式的视为不正确的139邮箱,会在输入框的后面出现提示。
5、邮件发送成功会弹出发送成功的提示。