[转载]HTTP Caching 优化网站

news/2024/5/13 11:02:53/文章来源:https://blog.csdn.net/JasonChou0913/article/details/101728772

HTTP Caching 用好了,可以极大的减小服务器负载和减少网络带宽。十分有必要深入了解下 http 的 caching 协议。

  先来看下请求/响应过程:

http 请求/响应

http 请求/响应

  1、用 Last-Modified 头

  在第一次请求的响应头返回 Last-Modified 内容,时间格式如:Wed, 22 Jul 2009 07:08:07 GMT。是零时区的 GMT 时间,servlet 中可以用 response.addDateHeader ("Last-Modified", date.getTime ()); 加入响应头。如图:

last-modified 和 If-Modified-Since

last-modified 和 If-Modified-Since

  Last-Modified 与 If-Modified-Since 对应的,前者是响应头,后者是请求头。服务器要处理 If-Modified-Since 请求头与 Last-Modified 对比看是否有更新,如果没有更新就返回 304 响应,否则按正常请求处理。如果要在动态内容中使用它们,那就要程序来处理了。

  ps:servlet 取 If-Modified-Since 可以用 long last = requst.getDateHeader ("If-Modified-Since");

  2、用 Etag 头

  很多时间可能不能用时间来确定内容是否有更新。那可以用 Etag 头,etag 是以内容计算一个标识。计算的方式可以自己决定,比如可以用 crc32、md5等。

Etag 和 If-None-Match

Etag 和 If-None-Match

  Etag 与 If-None-Match 是对应的,前者是响应头,后者是请求头。服务器要判断请求内容计算得到的 etag 是否与请求头 If-None-Match 是否一致,如果一致就表示没有更新,返回 304 就可,否则按正常请求处理。可以参考:用 HttpServletResponseWrapper 实现 Etag 过滤器

  3、用 Expires 头,过期时间

  当请求的内容有 Expires 头的时候,浏览器会在这个时间内不去下载这个请求的内容(这个行为对 F5 或 Ctrl+F2 无效,用 IE7,Firefox 3.5 试了,有效的比如:在地址输入后回车)。

expires 过期时间

expires 过期时间

  在 servlet 中可以用 response.addDateHeader ("Expires", date.getTime ()); 添加过期内容。

  ps:在 httpwatch 中可以看到 Result 为 (Cached) 状态的。

  4、用 max-age 的 Cache-Control 头

  max-age 的值表示,多少秒后失效,在失效之前,浏览器不会去下载请求的内容(当然,这个行为对 F5 或 Ctrl+F2 无效)。比如:服务器写 max-age 响应:response.addHeader ("Cache-Control", "max-age=10");

  ps:如果你还要加一些 Cache-Control 的内容,比如:private,最好不要写两个 addHeader,而是一个 response.addHeader ("Cache-Control", "private, max-age=10"); 否则 ie 可能对 max-age 无效,原因它只读第一个 Cache-Control 头。

  小结:

  Last-Modified 与 Etag 头(即是方式 1 和2)还是要请求服务器的,只是仅返回 304  头,不返回内容。所以浏览怎么 F5 ,304 都是有效的。但用 Ctrl+F5 是全新请求的(这是浏览器行为,不发送缓存相关的头)。

  Expires 头与 max-age 缓存是不需要请求服务器的,直接从本地缓存中取。但 F5 会忽视缓存(所以使用 httpwatch 之类的 http 协议监察工具时,不要 F5 误认为 Expires 和 max-age 是无效的)。

  http 协议监察工具:

  Firebox:httpfox、live http header

  IE:httpwatch、iehttpheader

  重要参考文章:How To Optimize Your Site With HTTP Caching

转载于:https://www.cnblogs.com/SophiaTang/archive/2011/12/21/2296322.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_844977.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在一个电商网站里面如何修改商品状态大致思路

在一个电商网站里面想要修改商品的状态,需要做以下的步骤: 1.在相关JSP页面中执行$.get方法,把三个参数传进去,一个是地址,一个是id,最后一个是回调方法,写完后再去Controller页面,这…

电商网站需要了解的SPU,SKU之间的关系,以及需要编写商品品类,商品参数组,商品参数表之间的关系和业务逻辑

什么是SPU?什么是SKU? 我们做电商网站有两个概念,特别要清楚,就是商品规格参数里面的SPU和SKU。为什么要熟悉这两个呢?因为商品的种类繁多,我们要去储存商品信息的话,就需要用商品数据结构方法…

多个项目如何往不同的git网站提交代码

背景:工作和自用的git地址可能是不一样的,这样我们需要配置一下,以达到不同项目往不同git网址的仓库提交代码的能力 1、生成密钥 首先要做的就是取配置两个不同的sshkey(生成两种不同的密钥文件) ##工作用的git账号邮箱地址 $ ssh-keygen -t rsa -C x…

网站视频下载及按帧转为jpg

网站视频下载及按帧转为jpg 1、准备切割视频 切割 clc; clear; %读取视频 video_file‘D:\1.mp4’; objVideoReader(video_file); frame_numobj.NumberOfFrames;%一共有多少帧 % 分离图片 for i1:15%读取前15帧 imgstrcat(‘D:\picture’,num2str(i)); imgstrcat(img,’.jpg’…

如何优雅的制作表白网站和罗盘时钟

如何优雅的制作表白网站和罗盘时钟前言 GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。 GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代码仓库托管及基本的 Web 管理界面以…

lol服务器维护是拳头,问拳头-英雄联盟官方网站-腾讯游戏

欢迎来到问拳头专栏。在此我们将针对各位所提出的问题进行解答。本周我们将聊到Reddit,4K以及召唤师技能。大家将在下方看到三个现成问题和回复,并且每周都会有全新的问题得到我们的答复。大家可以随意在评论当中联系我们。每位解答问题的Rioter都会尽其…

mtk有关的不错网站

http://blog.sina.com.cn/mtkshanghai MTK http://blog.sina.com.cn/shanghaimtk

【实战案例】——实战渗透某不法网站

作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座…

什么是域名?什么网站名?什么是URL

域名 通常有一串字符和后缀组成,常见的后缀有,com,net,cn,相对于ip或者别名地址来说,域名更好记,机器世界根据IP地址来定位主机,访问网页等资源 但是记住域名是不包括www滴&#x…

从单机至亿级流量大型网站系统架构的演进过程介绍

阶段一、单机构建网站 网站的初期,经常会在单机上跑所有的程序和软件。此时使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如mavenspringstructhibernate、mavenspringspringmvcmybat…

使用selenium爬取某出试卷的网站

from selenium import webdriver import pymongo import json import time import re # 使用终极武器了.# 修改头文件,防止被识别为爬虫 from selenium.webdriver.common.desired_capabilities import DesiredCapabilitiesclass Zujuan(object):def __init__(self):…

使用python3登陆12306网站

一、一些用到的技术1.1解析验证码(联众-收费,两分钱一个)验证码识别设计机器学习,没有耗费时间去实现,所以采用了第三方(联众)的在线打码,注册充值便可使用,识别率挺高的…

如何突破网站对selenium的屏蔽

使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制。它的应用,使得许多网站的反采集策略形同虚设。由于selenium不会在HTTP请…

免费图床网站推荐

免费图床网站推荐 聚合图床-推荐使用 官网地址:https://www.superbed.cn 简介:将图片分发到多处备份,借助其本身的CDN加速功能,节省服务器流量,并且不用担心图片被删除,即便其中某几个图床上的图片被删除…

新手上路--分享20个无版权的高清图库素材网站

今天这组网站比较有特色,有专门分享美食图片的,有专门分享复古图片的,各领风骚,质量都是一顶一的棒。下面就是20个无版权的高清无码图库站,记得收藏啊。Compfight Compfight 是一个图片搜索引擎,帮你快速找…

12佳精美的国外 Flash 网站模板下载(附源文件)

本文收集了12佳精美的国外Flash网站模板,附带源文件下载。Flash网站页面美观,互动性强,可以声形并茂,实现普通的HTML网站不能制造出的质感和动作,特别是动态的视觉特果,能给人以震撼视听的效应。下面这些免…

JiaThis社区分享按钮的使用,提升网站访问流量

JiaThis社区分享按钮的使用&#xff0c;提升网站访问流量 分享按钮样式&#xff1a; 在你页面上所需要的位置加上代码&#xff1a; <!-- JiaThis Button BEGIN --> <span class"jiathis_style"><span class"jiathis_txt">分享到&#…

ckks方案优化最好的_百度SEO网站整体优化方案 - 蜘蛛池博客

原出处&#xff1a;蜘蛛池博客原文链接&#xff1a;百度SEO网站整体优化方案 - 蜘蛛池博客正常情况下单独优化网站的某一个点无法让网站发挥出最大的seo效果&#xff0c;通过对网站进行系统化诊断&#xff0c;以详尽的实用的网站seo整体优化方案来指导我们对网站进行优化&#…

Flink实战之网站日志ETL案例【含代码】

问题导读1.怎样对字段进行大区转换&#xff1f;2.怎样拆分打平大JSON?3.怎样把不同类型的日志数据分别进行存储&#xff1f;应用场景&#xff1a;数据清洗【实时ETL】数据报表1、数据清洗【实时ETL】1.1、需求分析针对算法产生的日志数据进行清洗拆分算法产生的日志数据是嵌套…

【python爬虫】实现爬虫包含动态页面的“南京市公共资源交易中心”“南京公共采购信息网”等网站的爬虫,并且保存本地的“招标信息汇总.csv”

一、实现爬虫包含动态页面的“南京市公共资源交易中心”“南京公共采购信息网”等网站的爬虫&#xff0c;并且保存本地的“招标信息汇总.csv”。 效果展示&#xff1a; &#xff08;1&#xff09;界面&#xff1a; 打包成了exe文件&#xff0c;点击即可使用&#xff01;&#…