1. 在上面的日志里,如果你观察地很仔细,会发现有一个状态码为304,这个状态码表示该文件已经缓存到用户的电脑里了,再次请求它的时候不用从服务器上下载,而是直接访问用户电脑里面的缓存。这样做的目的是降低服务器的资源消耗,还可以提升用户访问网站的速度。平时我们访问一个网站时,很多元素为静态的小图片,那这些小图片完全可以缓存在咱们的电脑里,这样再次访问该站点时,速度就会很快。<br />那到底能缓存多久呢?如果服务器上的某个图片更改了,那么应该访问新的图片才对。这就涉及一个静态文件缓存时长的问题,也叫作“缓存过期时间”。在httpd的配置文件中,我们是可以控制这个时间的。编辑虚拟主机配置文件,内容如下:

    image.png
    这部分配置用到了 mod expires模块,相关配置内容并不难理解,通过字面也可以大致猜到其含义这里gif、jpeg、png格式的文件过期时长为1天,css、js、 flash格式的文件过期时长为2小时,其他文件过期时长为0,也就是不缓存。保存配置文件,检查配置是否有问题,没问题重新加载服务:

    image.png
    下面需要检查一下httpd是否加载expires模块
    /usr/local/apache.2.4/bin/apachectl -M|grep -i expires
    //没有任何输出的话,说明当前httpd不支持此expires服务,需要修改主配置文件
    vin /usr/local/apache2.4/conf/httpd.conf
    找到下面的行,把前面的#删除,如下:
    image.png
    重新加载一下服务
    image.png
    image.png
    //有下面这行输出,说明已经正确加载expires模块
    下面使用curl命令测试一下:
    image.png
    可以看到max-age=86400,这说明jpg的图片将缓存86400秒,也就是一天。在上面笔者曾提到了状态码为304,按理说既然有缓存,那我们请求该图片时也应该为304才对,但这里却是200。这是因为我们是使用cur1工具来请求的,它并不像浏览器那样可以缓存这些文件。另外也可以测试一下txt的文件:

    image.png
    其中max-age=0,说明没有缓存该类型的文件。