当直接在浏览器中输入一个URL,或者点击一个链接的时候,那么浏览器缓存就会起作用,如果缓存没有过期,那么浏览器会从本地读取资源,不会发起HTTP请求,如果缓存过期,那么浏览器会发起新的浏览器请求。

一、适用直接访问,非F5刷新页面的情况下
Expires是HTTP/1.0的缓存头, Cache-Control: max-age
是HTTP/1.1是用来进行HTTP缓存的头。Expires指定了资源过期的绝对时间,GMT格式,Cache-Control:
max-age指定了资源过期的相对时间,单位是秒。在支持HTTP/1.1的浏览器上,如果发送两个头,那么Cache-Control:
max-age会覆盖掉Expires;在支持HTTP/1.0的浏览器上,即使发送了两个头,但是只有Expires会起作用,所以为了兼容老的浏览
器,还是要同时发送这两个头。设置HTTP缓存,需要安装expires_module,其会发送Expires和Cache-Control:
max-age两个HTTP头。

配置apache:
可以直接配置在httpd.conf文件中

ExpiresActive On
ExpiresByType application/x-javascript "access plus 20 minutes"
ExpiresByType text/css "access plus 20 minutes"
ExpiresByType image/gif "access plus 20 minutes"
ExpiresByType image/jpeg "access plus 20 minutes"
ExpiresByType image/png "access plus 20 minutes"

ExpiresByType
application/x-javascript "access plus 20 minutes"
表示对js资源设置Expires和Cache-Control:
max-age头,其中Expires的值是以客户端访问资源的时间为基准的后20分钟,Cache-Control:
max-age的值是60x20秒。

ExpiresByType application/x-javascript "modification plus 20 minutes"和上面效果一样,只是Expires的时间是以资源最后修改的时间作为计算的基准。

二、适用F5刷新页面的情况下
关于ETage及Last-Modified

Last-Modified与ETag是同样的功能,都是用来标识一个资源是否更改过,Last-Modified的值是资源的时间戳,如果按F5或者刷
新按钮则If-Modified-Since头会带着时间戳发送到服务器,如果服务器上资源的最后修改时间<=这个时间,那么返回304 Not
Modified,否则返回200 OK
以及新的资源;ETag的值是通过资源的信息(一般为inode,大小,时间戳)而计算出来的一个字符串,如果按F5或者刷新按钮则If-None-
Match头会带着这个值发送到服务器,服务器用这个值来和当前资源的值进行比对,如果相等,则返回304 Not Modified,否则返回200
OK 以及新的资源。默认情况下Apache对静态资源会发送Last-Modified和ETage

视浏览器支持情况,较老的浏览器支持Last-Modified,较新的浏览器支持ETage,所以为了兼容,可以两个都开启,不过,当两者都开启的情况
下,apache会验证同时验证两者是否符合缓存条件,也就是即使Last-Modified符合缓存条件而ETage不符合,apache会重新返回内
容,即返回200状态码而不是304

apache默认情况下同时开启这两项功能的

如果关闭ETage
配置这两行即可
FileETag None
Header unsets ETag

如果只是部分关闭Last-Modified,如只对gif|jpg|png文件关闭
配置如下:
LoadModule headers_module modules/mod_headers.so
<FilesMatch "\.(gif|jpg|png)">
Header unset Last-Modified
</FilesMatch>

参照Apache官网文档:http://httpd.apache.org/docs/2.2/zh-cn/mod/mod_expires.html

配置apache使之支持浏览器端的缓存的更多相关文章

  1. 全部用startssl生成的证书,配置Apache使其支持SSL

    Apache的编译安装见这篇: http://www.cnblogs.com/yjken/p/3921840.html 网上查阅了一大批资料,得知自己生成的证书是会被浏览器提示“证书不安全”的,我也就 ...

  2. Apache下开启SSI配置,使html支持include包含

    有的时候,我们的页面有公共的导航栏navbar,公共的脚注footer,那么我们就想把这些公共部分独立成一个html文件,在要引用的地方像引用js,css一样,给包含进来. Apache下开启SSI配 ...

  3. Windows下配置Apache服务器并支持php

    php环境的配置相对来说比较繁琐,网上教程大部分都是放一起说,总体感觉比较乱,其实Apache是一款通用的服务器软件,可以用来配置支持静态页面,php.Python.Java甚至asp等服务端语言,要 ...

  4. 配置Apache控制浏览器端的缓存的有效期

    这个非常有用的优化,mod_expires可以减少20-30%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求.但要注意更新快的文件不要这么做.这个模块控制服 ...

  5. wamp配置apache虚拟主机支持多域名访问localhost

    1.背景: 在进行网站开发的时候,通常需要以http://localhost或者127.0.0.1等地址来访问本地环境的网站.不过随着开发项目的增多,需要每次先访问localhost然后再选项目,显得 ...

  6. CentOS linux下安装和配置Apache+SVN(用浏览器http方式访问SVN目录)

    在CentOS linux下安装SVN,我们可以进行以下步骤: 第一步:安装CentOS Linux操作系统,并在CentOS安装进行的同时,自定义安装这一步,一定要勾选Subversion(在“开发 ...

  7. 安装篇八:配置 Nginx 使其支持 MySQL 应用

    配置说明 (让nginx  MySQL(中间件)之间建立关系) 第一个里程: 编写nginx.php首页文件 第二个里程:重启nginx 第三个里程:访问网页测试 打开浏览器访问:http://47. ...

  8. 安装篇七:配置 Nginx 使其支持 PHP 应用

    配置说明(NGINX-PHP) (让nginx  php(中间件)之间建立关系):nginx--php建立关系---fastcgi---cgi 第一个里程: 编写nginx虚拟主机配置文件 第二个里程 ...

  9. 使用CDN后如何配置Apache使其记录访客真实IP

    今天想看看哪些地区的人访问过我的网站,于是打开Apache网站响应日志,把访客IP复制到百度,发现搜到的全部都是我是用的CDN的节点IP,真实的访客IP并没有被记录. 如图所示,上面的103.45.7 ...

随机推荐

  1. DOCKER 开发学习记录

    DOCKER常用命令及参数 DOCKER镜像管理命令: 检索:docker search image_name 下载:docker pull image_namge 查看本地镜像:docker ima ...

  2. 2017多校第一套&&hdu6038 思维 数学

    链接  http://acm.hdu.edu.cn/showproblem.php?pid=6038 题意: 给你一个a序列,代表0到n-1的排列:一个b序列代表0到m-1的排列.问你可以找出多少种函 ...

  3. JAVA多线程之CountDownLatch

    前序: 上周测试给开发的同事所开发的模块提出了一个bug,并且还是偶现. 经过仔细查看代码,发现是在业务中启用了多线程,2个线程同时跑,但是新启动的2个线程必须保证一个完成之后另一个再继续运行,才能消 ...

  4. Spring配置集群定时任务

    正常配置定时任务的时候配置定时任务调度工厂的代码如下 <bean id="" class="org.springframework.scheduling.quart ...

  5. solr服务的搭建(以solr4.1实现)

    1.准备工作:一个干净的Tomcat,solr-4.10.3. 2.新建一个文件夹我这里命名为solr,将Tomcat和solr-4.10.3放进去.新建一个solrhome的文件夹,里面放的是sol ...

  6. Personal Learning Path of Java——Java语言基础

    Java语言是面向对象编程语言,Java程序的基本组成单元是类,类体中又包括属性和方法两部分.每一个程序都必须包含一个main()方法,含有main()方法的类称为主类. 如下面代码: package ...

  7. TypeScript装饰器(decorators)

    装饰器是一种特殊类型的声明,它能够被附加到类声明,方法, 访问符,属性或参数上,可以修改类的行为. 装饰器使用 @expression这种形式,expression求值后必须为一个函数,它会在运行时被 ...

  8. tomcat更改端口号

    apache-tomcat-8文件下的conf文件下的server.xml文件打开将    <Connector port="8080" protocol="HTT ...

  9. Linux中ctrl+z 、ctrl+c、 ctrl+d区别

    ctrl+c,ctrl+d,ctrl+z在linux程序中意义和区别 ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样.   ctrl+c是强制中断程序的执行,,进程已经终止.   ct ...

  10. Phpstorm10 主题下载

    ================================================================================ submit:主题 http://ww ...