在做proxyserver 时要考虑的一个问题就是要对Client 的If-Modified-since 和 Server端的 Last-Modified 的两个时间进行比较, 如果用java 些的话就比较方便, 但是有一些小问题必须要注意, 否则自己些的proxy总是 在一些机器上没问题, 但在有些机器上就不行.
问题的根源是在构造SimpleDateFormat 是的一个小小疏忽, 一般我们构造就是像这样:
SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); //此时埋下了隐患
因为DateFormat 是locale-sensitive 的类 所以在构造对象的时候没有指明相应的Locale 的话就有可能不能进行时间的解析, 具体哪台机器可以解析 哪台不能 就要看其JVM 的设置了, 所以在构造这种locale-sensitive 时就不能忘记Locale 的指明, 像NumberFormat.
但是在做proxyserver时 一下几种df 都失败了:
df = new SimpleDateFormat("EEEEEE, dd-MMM-yy HH:mm:ss z",java.util.Locale.CHINA);
df = new SimpleDateFormat("EEEEEE, dd-MMM-yy HH:mm:ss z",java.util.Locale.PRC);
不知道为什么 只有把地区指定为US 时才能正确解析,即使上的是国内的网站也不行, 费解.