Tag: http status code 304

NodeJS / express:caching和304状态码

当我重新加载一个使用express的网站时,由于NodeJS服务器向我发送了一个304状态码,所以我用Safari(而不是Chrome)得到了一个空白页面。 如何解决这个问题? 当然,这也可能只是Safari的一个问题,但实际上它在所有其他网站上都可以正常工作,所以在我的NodeJS服务器上也是一个问题。 为了生成页面,我使用了res.render Jade。 更新:看起来像这样的问题发生,因为Safari发送'cache-control': 'max-age=0'重新加载。 更新2:我现在有一个解决方法,但有没有更好的解决scheme? 解决方法: app.get('/:language(' + content.languageSelector + ')/:page', function (req, res) { // Disable caching for content files res.header("Cache-Control", "no-cache, no-store, must-revalidate"); res.header("Pragma", "no-cache"); res.header("Expires", 0); // rendering stuff here… } 更新3:所以完整的代码部分目前是: app.get('/:language(' + content.languageSelector + ')/:page', pageHandle); function pageHandle (req, res) { var language = req.params.language; var thisPage […]

如何“304未修改”的作品?

如何生成“304未修改”? 浏览器如何确定对http请求的响应是否是304? 它是由浏览器设置还是从服务器发送? 如果通过服务器发送,服务器如何知道caching中可用的数据,又如何将304设置为图像? 我的猜测,如果生成的浏览器 function is_modified() { return get_data_from_cache() === get_data_from_url(); }; function get_data_from_cache() { return some_hash_or_xxx_function(cache_data); } function get_data_from_url() { return some_hash_or_xxx_function(new_data); } function some_hash_or_xxx_function(data) { // do something with data // what is that algorithm.? return result; } console.log(is_modified()); 我依靠第三方API提供商来获取数据,parsing并推送到数据库。 数据在每次请求过程中都可能发生变化,也可能不发生变化,但是标题总是发送200 ,我不想分析,检查DB中最后一个唯一标识符等等,以确定数据的变化,也不直接比较结果我md5() , sha1()和crc32() Hashed结果&工作正常,但想知道algorithm来确定304 。 我想用同样的algorithm来确定数据的变化。

如何检查如果jQuery.ajax()请求标题状态是“304未修改”?

如何检查如果jQuery.ajax()请求标题状态是“304未修改”? jqXHR.status通常返回200 ,即使请求标头为“304未修改”。 ifModified:true因为它破坏了XHR数据请求,所以没有多大帮助 。