Questions tagged «http-status-code-304»

2
“ 304未修改”如何工作?
如何生成“ 304未修改”响应? 浏览器如何确定对HTTP请求的响应是否为304? 是由浏览器设置还是从服务器发送? 如果由服务器发送,服务器如何知道缓存中可用的数据,又如何将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 the data. // What is that algorithm? return result; } console.log(is_modified()); 我依靠第三方API提供程序来获取数据,解析并将其推送到我的数据库。每次请求期间数据可能会更改,也可能不会更改,但是标头始终会发送200。我不想解析,检查数据库中的最后一个唯一ID,依此类推...以确定数据的变化,也不想直接比较结果(而是I)md5(),sha1()并且crc32()对结果进行散列并可以正常工作,但是我想知道确定算法304。 我想使用相同的算法来确定数据中的更改。

5
NodeJS / express:缓存和304状态代码
重新加载使用express创建的网站时,使用Safari(而不是使用Chrome)会显示空白页,因为NodeJS服务器向我发送了304状态代码。 如何解决呢? 当然,这也可能只是Safari的问题,但实际上它可以在所有其他网站上正常工作,因此它也必须是我的NodeJS服务器上的问题。 为了生成页面,我将Jade与结合使用res.render。 更新:似乎发生此问题,因为Safari'cache-control': 'max-age=0'在重新加载时发送。 更新2:我现在有一个解决方法,但是有更好的解决方案吗?解决方法: 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 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.