当前位置: 首页 > news >正文

舆情网站大全网站开发的职业认知报告

舆情网站大全,网站开发的职业认知报告,织梦网站内容怎么做付费可见,wordpress 有缓存吗1. ETag HTTP 1.1中引入了ETag来解决缓存的问题。ETag全称是Entity Tag#xff0c;由服务端生成#xff0c;服务端可以决定它的生成规则。如果根据文件内容生成散列值。那么条件请求将不会受到时间戳的改动造成带宽浪费。下面是根据内容生成散列值的方法#xff1a; 1 var g…   1. ETag HTTP 1.1中引入了ETag来解决缓存的问题。ETag全称是Entity Tag由服务端生成服务端可以决定它的生成规则。如果根据文件内容生成散列值。那么条件请求将不会受到时间戳的改动造成带宽浪费。下面是根据内容生成散列值的方法 1 var getHash function(str) { 2 var shasum crypto.createHash(sha1); 3 return shasum.update(str).digest(base64); 4 } 与If-Modified-Since/Last-Modified不同的是ETag的请求和响应是If-None-Match/ETag。浏览器在收到带有ETag:14-389247298365字段的响应头后会在后面的请求中将其设置在请求头中If-None-Match: 14-389247298365。服务器端收到带If-None-Match: 14-389247298365的报头后会进行如下判断来决定返回新的内容还是只响应一个304状态码让浏览器使用本地缓存版本 1 var handle function(req, res) {2 fs.readFile(filename, function(err, file){3 var hash getHash(file);4 var noneMatch req[if-none-match];5 if (hash noneMatch) {6 res.writeHead(304, Not Modified);7 res.end();8 } else {9 res.setHeader(ETag, hash); 10 res.writeHead(200, OK); 11 res.end(file); 12 } 13 }) 14 } 2. Last-Modified 通常来说如果请求头中不包含ETag服务端会通过判断Last-Modified值来决定响应304状态码还是新的文件内容。Last-Modified顾名思义指的是文件的最后一次修改时间。与ETag一样在浏览器首次访问站点后服务端会在其响应头中设置一个Last-Modified的字段它的值是一个UTC格式的时间字符串。随后在浏览器对站点的第二次访问中会在其请求头中设置一个If-Modified-Since其值就是上一次返回的Last-Modified的值。服务器端会根据这个值是否与其本地文件的最后一次修改时间相同来判断是否使用缓存。代码如下 1 var handle function(req, res) {2 fs.stat(filename, function(err, stat){3 var lastModified stat.mtime.toUTCString();4 if (lastModified req.headers[if-modified-since]) {5 res.writeHead(304, Not Modified);6 res.end();7 } else {8 fs.readFile(filename, function(err, file){9 var lastModified stat.mtime.toUTCString(); 10 res.setHeader(Last-Modified, lastModified); 11 res.writeHead(200, OK); 12 res.end(file); 13 }); 14 } 15 }) 16 } 3. Expires 和 Cache-Control 以上两种的缓存判断都需要客户端向服务端先发送一个条件请求根据返回来决定是否使用缓存。需要一定的时间开销和带宽。而实际上浏览器最先判断的是Expires 和 Cache-Control。在服务端相应里设置Expires 或 Cache-Control浏览器会根据该值进行缓存。Expires是一个GMT格式的时间字符串。浏览器再接收到这个过期值后只要本地还存在对应缓存文件在到期时间之前它都不会再发起请求。但它的缺陷是浏览器与服务器之间的时间可能不一致导致文件提前过期或已经过期却还没删除。 而Cache-Control恰恰解决了这个问题 1 var handle function(req, res) { 2 fs.readFile(filename, function(err, file){ 3 res.setHeader(Cache-Control, max-age 10*365*24*60*60); 4 res.writeHead(200, OK); 5 res.end(file); 6 }); 7 } 上面的代码为Cache-Control设置了max-age值为10年max-age会告诉浏览器文件多长时间后过期进行倒计时式的计算。这样就可以避免客户端与服务器端时间不一致带来的问题了。此外Cache-Control还可以public、private、no-cache、no-store等更精细地控制缓存的选项。HTTP1.0时还不支持max-age如今的服务端在模块的支持下多半同时对Expires 和 Cache-Control进行支持如果浏览器中两个值都存在且同时被支持max-age会覆盖Expires。 这两种方法虽然节省了带宽和请求时间但其缺陷是当服务端的文件内容进行了更新时无法通知客户端更新。因为浏览器是根据URL进行缓存的所以我们一般在对静态资源使用缓存时也会对其设定版本号。使得客户端能请求到新的内容。一般更新机制有如下两种方式 每次发布web应用或静态资源的路径中附带对应的版本号http://url.com/?v20141216每次发布web应用或静态资源的路径中附带文件内容的hash码http://url.com/?hashsdasd4d因为文件内容更新并不意味着新的版本。所以使用hash值得方式会更加妥当一些。 转载于:https://www.cnblogs.com/WhiteCusp/p/4168304.html
http://wiki.neutronadmin.com/news/59396/

相关文章:

  • 企业招聘网站南京比较好的软件公司
  • 网站报名系统怎么做证明做二维码打款网站链接
  • 常州网站建设开发高唐企业做网站推广
  • 网站策划方案ppt营销策略怎么写
  • 台州品牌网站建设凡科建站官网网站模板
  • 建网站挣钱网站建设重点
  • 为公司做的图可以上传网站吗网站备案号取消原因
  • 社交做的最好的网站做网站賺钱
  • 有没有免费的广告平台如何 网站优化
  • 外贸建网站哪家好html5技术可以制作网站吗
  • 网页视频下载快捷键关键词优化seo外包
  • 建英文网站有用吗做网站用母版页不好么
  • 好康的网站代码宁夏网站建设
  • 网站建设用户量分析关键词优化过程
  • 网站个人备案百度推官电商网站的建设与安全
  • 湖南建设信誉查询网站友情链接互换网站
  • 福州医保网站调入申报怎么做揭阳建设局网站
  • 同ip怎么做不同的网站怎样制作网页视频
  • 专业网站设计发展前景旅游网站建设与网页设计意义
  • 网站的弹窗是怎么做的更改网站建设报价
  • 网站tag设计辽宁省建设工程信息网首页官网
  • 网站的策划分析网站开发 最好开发语言和平台
  • 90设计网站免费素材比较好的网页模板网站
  • 学做缝纫的网站自适应网站建设电话
  • wordpress 支付方式搜索引擎优化理解
  • 怎么做冒牌网站预约做家庭清洁的网站
  • c2c网站免费建设河北省建设厅网站电话
  • 网站建设哪个公司最好金华做网站公司
  • 韩语网站建设境外网站icp备案申请表
  • 广州建站推广建网站需要多长时间