据我了解的规格,RFC 2616(HTTP/1.1)中引入的ETag是Last-Modified-Header的后继产品,它可以让软件架构师更好地控制它.缓存重新验证过程.
如果存在Cache-Validation-Headers(If-None-Match和If-Modified-Since),则根据RFC 2616,客户端(即浏览器)在检查资源时是否应使用ETag.根据RFC 2616的第14.26节,如果If-None-Match-Header中出现的ETag已更改,则服务器不得以304 Not Modified响应,并且服务器必须忽略其他If-Modified-Since-Header ,如果有的话.如果呈现的ETag匹配,则他不得执行请求,除非Last-Modified-Header中的Date表示如此.(如果提供的ETag匹配,服务器应该在GET或HEAD请求的情况下响应304 Not Modified ...)
这部分为一些猜测留下了空间:
...好的当我写这篇文章的时候,问题就是这个答案:
上面提到的(小)矛盾是因为弱ETag.标有弱ETag的资源可能已经改变,尽管ETag没有.因此,在弱ETag的情况下,当ETag没有改变时回答304 Not Modified是错误的,但是If-Modified-Since中呈现的日期不匹配,对吧?
在我的mac(雪豹)上的bash脚本中,我有一个路径和文件名,我需要获取该文件的修改日期/时间.我发现我能做到:
stat -f "%m" $MYFILE
但是,这将返回我假设的纪元日期/时间.我需要格式化的日期/时间:YYYYMMDDThhmmss
.我发现了各种各样的选项(比如date
)显然依赖于GNU,这在我的mac上我没有.
在mac(BSD?)bash上以用户指定的格式修改文件的日期/时间的标准方法是什么?或者至少是一个日期/时间格式化功能,我可以将stat
上面的呼叫结果传递给.
我在文件夹中有许多文件,我需要获取最后修改日期.所以我用过
FDate = IO.File.GetLastWriteTime(FName)
Run Code Online (Sandbox Code Playgroud)
它适用于某些文件,但在其他文件中,我得到的日期为1/1/1601.但是当我在Windows资源管理器中检查文件时,所有日期看起来都很正常(最近).所以,我猜测文件系统中存储了多个文件日期,而.NET所看到的并不是Windows所看到的.如何在文件资源管理器窗口中准确显示"修改日期"的日期?
我尝试了一些Visual Basic 6.0 API的东西,但这似乎不适用于.NET.
我正在使用这段代码来尝试检索文件的最后修改日期:
NSError *error = nil;
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath: myFilePath error:&error];
if (attributes != nil) {
NSDate *date = (NSDate*)[attributes objectForKey: NSFileModificationDate];
NSLog(@"Date modiifed: %@", [date description]);
}
else {
NSLog(@"Not found");
}
Run Code Online (Sandbox Code Playgroud)
这适用于主包中的文件,但如果文件位于应用程序文档文件夹的子目录中,则不适用,myFilePath
如下所示:
/Users/User/Library/Application Support/iPhone Simulator/6.0/Applications/The App ID Number/Documents/mySubdirectory/My Saved File
Run Code Online (Sandbox Code Playgroud)
它不断返回"未找到".
我知道文件在那里,因为我可以用finder查看它.我也尝试删除文件名中的空格,但这没有任何效果.
错误日志说没有这样的文件或目录,所以当我尝试将文件复制到文档目录时,看起来肯定出错了.
奇怪的是,迭代文档子目录,contentsOfDirectoryAtPath
显示文件存在.
我已尝试对路径进行硬编码并以编程方式检索它,其中:
*myFolder = [documentsDirectory stringByAppendingPathComponent:@"myFolder"];
*myFilePath = [myFolder stringByAppendingPathComponent:theFileName];
Run Code Online (Sandbox Code Playgroud)
谁能看到我哪里出错了?
除了向我的Core Data存储中的每个Entity添加NSDate属性之外,是否有一种编程方式来获取任何对象的修改日期?
我想将Android Contacts Phone克隆到我自己的SQLite数据库中.为了节省时间,应在Android系统中新创建或更新单个联系人时触发克隆.因此,我希望每个联系人都有"最后修改时间".
对于API级别18或更高级别,似乎我将通过使用ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP获得单个人联系的最后修改时间.但是对于API级别17或更低级别,似乎之前有一些讨论建议使用"ContactsContract.RawContacts.VERSION"或"CONTACT_STATUS_TIMESTAMP".
对于"CONTACT_STATUS_TIMESTAMP",它始终返回ZERO或null.对于"ContactsContract.RawContacts.VERSION",当我更新一个人的联系人的照片,电话号码或电子邮件时,版本保持不变.
很高兴如果有人会指出我犯的错误......
有人可以告诉我一个可靠的方法来获取Java资源的最后修改时间吗?资源可以是JAR中的文件或条目.
奇怪的问题:是否有可能在资产文件夹中获取文件的最后修改日期,或者这是毫无意义和不可能的?
我问,因为我在应用程序启动时将一个只读数据库复制到数据文件夹中,但是如果现有文件比存储在assets文件夹中的文件旧(或者如果文件),则只会执行复制不存在).
如果那不可能,任何人都知道一个更好的约定?如果需要,我可以在一个单独的问题中发布.TIA!
我只是很想知道这一点,当我给mvn install而不做'clean'时,maven只编译修改过的java文件.maven如何识别java文件是否被修改?我相信它没有使用文件的最后修改属性.
我相信的原因:我有一个模块,在合并svn的更改后,我给了mvn install并且它没有编译修改后的文件,当我看到更改时,我看到'long'被修改为'Long'in吸气剂和二传手.
所以我只是想知道如果java文件发生了变化,maven如何识别?
(PS我正在使用Apache Maven 3.0.3,如果这很重要)