牌面

来源:互联网 发布:手机淘宝达人申请页面 编辑:程序博客网 时间:2024/04/28 04:00

ps:有点失落

1.将一个10G的文件a.log拷贝到b.log

class  aa{    public static void main(String[] args) throws Exception {        FileInputStream fileInputStream = new FileInputStream("d:/a.log");        FileOutputStream fileOutputStream = new FileOutputStream("d:/b.log");        byte[] bytes = new byte[1024];        while(fileInputStream.read(bytes) != -1){            fileOutputStream.write(bytes);        }    }}


2.缓存技术(一张图片缓存一天)

   HTTP中有控制客户端缓存的头,HTTP头中的Expires和Cache-Control就是完成这个事情的。

   Expires: Sun, 16 Oct 2016 05:43:02 GMT  表示访问的日期在Sun, 16 Oct 2016 05:43:02 GMT之前,浏览器就不去服务器那边获取文件了,这样有个弊端,用户可能更改自己电脑上的时间,所以不太好。

   Cache-Control: max-age:600  表示浏览器会缓存10分钟(这种属于相对时间)。

   如果该文件可能时不时会更新,服务端非常希望客户端能时不时过来问一下这个文件是否过期,如果没有过期,服务端不返回数据给你,只告诉浏览器你的缓存还没有过期(304)。然后浏览器使用自己存储的缓存来做显示。这个就叫做条件请求

   客户端第一次访问资源的时候,服务端返回资源内容的同时返回了Last-Modifed:Wed, 07 Aug 2013 15:32:18 GMT 服务端在告诉客户端:你获取的这个文件我最后的修改时间是Wed, 07 Aug 2013 15:32:18 GMT 。浏览器在获取这个文件存到缓存中的时候,给缓存中的文件同时记录上这个最后修改时间。第二次访问的时候(我们假设这里没有设置expires或者cache-control)。那么服务端访问资源的时候会带上If-Modify-since:Wed, 07 Aug 2013 15:32:18 GMT ;如果没有修改返回个304告诉客户端,我没有修改过。如果有变化了,我就返回200,并且带上资源内容。

   补充:如果是直接刷新的话,会直接从缓存取;如果按F5,会检测一下是否过期;如果Ctrl+F5,则会清除缓存重新从服务器获取资源

0 0
原创粉丝点击