Http 304 nginx expire

622 阅读3分钟
HTTP304错误的详细解释baiNotModified客户端有缓冲的du文档并发出了一个条件性的请求(一般是提zhi供If-Modified-Since头表示客户只想比指定日dao期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。如果客户端在请求一个文件的时候,发现自己缓存的文件有LastModified,那么在请求中会包含IfModifiedSince,这个时间就是缓存文件的LastModified。因此,如果请求中包含IfModifiedSince,就说明已经有缓存在客户端。只要判断这个时间和当前请求的文件的修改时间就可以确定是返回304还是200。

www.jianshu.com/p/498ab4a27…

nginx过期配置

location ~ \.(jpg|png|jpeg|gif)$  {
        expires 30d;
        root   /data/www/www.xxx.com/;
}

location ~ \.(js|css)$  {
        expires 2h;
        root   /data/www/www.xxx.com/;
}

防止304出现

if_modified_since off;
add_header Last-Modified "";

etag off;

more_set_headers -s 404 -t 'ETag';

more_clear_headers 'ETag';

blog.csdn.net/HoeWang/art…

www.cnblogs.com/lpfuture/p/…

nginx expires配置

配置expires
expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求
要配置expires,可以在http段中或者server段中或者location段中加入

1
2
3
4
location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {
root /var/www/img/;
expires 30d;
}

控制图片等过期时间为30天,当然这个时间可以设置的更长。具体视情况而定
比如

1
2
3
4
location ~ \.(wma|wmv|asf|mp3|mmf|zip|rar|swf|flv)$ {
root /var/www/upload/;
expires max;
}

expires 指令可以控制 HTTP 应答中的“ Expires ”和“ Cache-Control ”的头标(起到控制页面缓存的作用)
语法:expires [time|epoch|max|pff]
默认值:off
expires指令控制HTTP应答中的“Expires”和“Cache-Control”Header头部信息,启动控制页面缓存的作用
time:可以使用正数或负数。“Expires”头标的值将通过当前系统时间加上设定time值来设定。
time值还控制"Cache-Control"的值:
负数表示no-cache
正数或零表示max-age=time

epoch:指定“Expires”的值为 1 January,1970,00:00:01 GMT
max:指定“Expires”的值为31 December2037 23:59:59GMT,"Cache-Control"的值为10年。
-1:指定“Expires”的值为当前服务器时间-1s,即永远过期。
off:不修改“Expires”和"Cache-Control"的值

expires使用了特定的时间,并且要求服务器和客户端的是中严格同步。
而Cache-Control是用max-age指令指定组件被缓存多久。
对于不支持http1.1的浏览器,还是需要expires来控制。所以最好能指定两个响应头。但HTTP规范规定max-age指令将重写expires头。

 nginx MapViewOfFile(2097152000) of file mapping "cache_one" failed

cache_one内存设置过大

Nginx 静态资源缓存优化

blog.csdn.net/xuanyuanjia…allfirst_rank_v2~rank_v25-5-106404208.nonecase&utm_term=nginx%20%E8%A7%A3%E5%86%B3304%E7%BC%93%E5%AD%98

Nginx设置静态页面压缩和缓存过期时间的方法 www.jb51.net/article/692…

nginx缓存静态资源,只需几个配置提升10倍页面加载速度 www.jianshu.com/p/87cd8a6af…

nginx 设置客户端缓存过期时间 www.cnblogs.com/liusingbon/…

nginx静态文件缓存的解决方案 www.cnblogs.com/wangzhisdu/…

当你第一次bai访问时,服务器会返回给你200状态码,du同时在头里追加ETag值给zhi你。dao浏览器拿到后将其缓存。 下一次再访问时,因浏览器已经有该地址的ETag值了。会将其缓存的ETag值内容放在请求头的If-None-Match中,服务器检查其自身内容的ETag值是否与其一致,如果一致就会返回304状态码,告诉你内容和你保存的一致,没有发生改变过。 

举例来说, C:S,你几岁了? S:C,我18岁了。 

=========== C:S,你几岁了?我猜你18岁了。 S:靠,你知道还问我?(304) =========== C:S,你几岁了?我猜你18岁了。 S:C,我19岁了。(200) 

以上就是200和304的解释。 Cache-Control和Expires则是告诉浏览器缓存这些数据的策略。