etag

How do I return 304 Unmodified status with Express.js?

假如想象 提交于 2020-01-13 05:45:22
问题 I'm using node and express for the back end of an iOS application. Data is stored in a SQL Server database, so iOS apps query the server, the server queries the database, server receives the db response, and then forwards the response to the iOS application. I'm trying to figure out how caching works though. I'm serving a lot of static content - blog articles for example. So I planned to use etags, but I'm not sure how it's supposed to work. I make a request, get content, and cache the

disabling gzip if etag exists in proxy_pass response

只愿长相守 提交于 2020-01-03 20:57:26
问题 I'm new to nginx. Is there a way to disable gzip if proxy_pass reutrns the ETag header. I.E: gzip on; . . . location /foo/bar { proxy_pass http://server:123; if ($upstream_http_etag) { gzip off; } } Basically I'm looking for a workaround to this bug that will disable the gzip compression if server responded with etag header. http://trac.nginx.org/nginx/ticket/377 Thank you, Vitaly 回答1: There is now, gzip_proxied has no_etag parameter: gzip on; gzip_proxied no_etag; The bug is closed, too. 来源:

Configuring ETags with Http module in asp.net

佐手、 提交于 2019-12-31 02:24:20
问题 i'm optimizing our company web site with seo optimization and yslow. but in yslow the ETAGS are F . I've gone through tens of web sites and tutorials and the best option was using an HTTP Module. I've done so and tried several modules but none shows results.maybe something in syntax is wrong or i'm registering it wrong .some say it is best to use app_PostReleaseRequestState instead of OnPreSendRequestHeaders because of a crash in heap.I've used both with no results. here it is : the file name

nginx - missing etag when gzip is used

独自空忆成欢 提交于 2019-12-30 06:12:12
问题 If I setup nginx to use gzip, it removes any etag header. The reasoning behind this is that the same resource cannot be byte-for-byte identical given that gzip has various compression levels. But nginx also removes a weak etag, which just means that the resources are semantically equivalent. This seems like incorrect behavior by nginx. Am I missing something? If not, is there a way to fix this? wiki 回答1: You should upgrade to nginx 1.7.3 or higher. Feature: weak entity tags are now preserved

HTTP协议 (四) 缓存

只愿长相守 提交于 2019-12-28 22:51:04
转载小坦克: https://www.cnblogs.com/TankXiao/archive/2012/11/28/2793365.html HTTP协议 (四) 缓存 之前写过一个篇 【HTTP协议详解】 ,这次继续介绍HTTP协议中的缓存机制。HTTP协议提供了非常强大的缓存机制, 了解这些缓存机制,对提高网站的性能非常有帮助。 本文介绍浏览器和Web服务器之间如何处理"浏览器缓存",以及控制缓存的http header. 本文会使用Fiddler来查看HTTP request和Response, 如果不熟悉这工具,可以先参考 [Fiddler教程] 。在看本文的时候, 请务必打开Fiddler来实践。 阅读目录 缓存的概念 缓存的好处 Fiddler可以方便地查看缓存的header 如何判断缓存新鲜度 通过最后修改时间,判断缓存新鲜度 与缓存相关的header ETag 浏览器不使用缓存 直接使用缓存,不去服务器端验证 如何设置IE不使用缓存 公有缓存和私有缓存的区别 缓存的概念 缓存这个东西真的是无处不在, 有浏览器端的缓存, 有服务器端的缓存,有代理服务器的缓存, 有ASP.NET页面缓存,对象缓存。 数据库也有缓存, 等等。 http中具有缓存功能的是浏览器缓存,以及缓存代理服务器。 http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本

How to use etags in a PHP file?

瘦欲@ 提交于 2019-12-28 12:16:46
问题 How do you implemented etags inside a PHP file? What do I upload to the server and what do I insert into my PHP file? 回答1: Create / edit your .htaccess file and add the following: FileETag MTime Size Either place the following inside a function or put it at the top of the PHP file that you need etags to work on: <?php $file = 'myfile.php'; $last_modified_time = filemtime($file); $etag = md5_file($file); header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT"); header(

What takes precedence: the ETag or Last-Modified HTTP header?

為{幸葍}努か 提交于 2019-12-28 07:58:11
问题 For two subsequent requests, which of the following two headers is given more weight by browsers should one of them change: ETag or Last-Modified? 回答1: According to RFC 2616 section 13.3.4, an HTTP 1.1 Client MUST use the ETag in any cache-conditional requests, and if both an ETag and Last Modified are present, it SHOULD use both. The ETag header is considered a strong validator (see section 13.3.3), unless explicitly declared weak by the server, whereas the Last Modified header is considered

HTTP请求的缓存(Cache)机制

我的未来我决定 提交于 2019-12-27 06:06:14
原文地址:http://small.aiweimeng.top/index.php/archives/58.html 先来一张图: #### 下面简单的来描述一下HTTP Cache机制 : 当资源资源第一次被访问的时候,http status返回200,在头部携带当前资源的描述信息,eg: 最后修改的时间:```Last-Modified``` 资源状态唯一标识:```Etag``` 资源在客户端缓存的过期时间:```Expires``` 同时浏览器会将资源缓存到cache目录,并保存文件描述信息。 当客户端第二次请求资源时,会先检查cache目录中是否含有该资源,如果有,并且还没到Expires设置的时间, 即文件还没有过期,那么此时客户端将直接从Cache目录中读取文件,而不再发送请求 如果资源已经过期,客户端会发送一次http请求到服务器,同时在header携带上次修改的时间: ```text If-Modified-Since Thu, 26 Nov 2009 13:50:19 GMT If-None-Match "8fb8b-14-4794674acdcc0" ``` #### 为什么会返回上一次的信息呢? web服务器在接收到请求时,会先解析header里面的信息,然后校验头部信息。 如果该资源文件从上次时间到现在都没有修改或者Etag信息没有变化,

OkHttp3源码详解之HTTP重定向&缓存的处理(二)

坚强是说给别人听的谎言 提交于 2019-12-26 17:11:01
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击: https://space.bilibili.com/474380680 本篇文章将继续从以下两个内容来解析OkHttp3源码: [HTTP重定向] [缓存的处理] 一、HTTP重定向 1.1 重定向 重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。 ----百度百科 1.2 原理 在 HTTP 协议中,重定向操作由服务器通过发送特殊的响应(即 redirects)而触发。HTTP 协议的重定向响应的状态码为 3xx 。浏览器在接收到重定向响应的时候,会采用该响应提供的新的 URL ,并立即进行加载;大多数情况下,除了会有一小部分性能损失之外,重定向操作对于用户来说是不可见的。 ​ image 不同类型的重定向映射可以划分为三个类别:永久重定向、临时重定向和特殊重定向。 1.3 永久重定向 这种重定向操作是永久性的。它表示原 URL 不应再被使用,而应该优先选用新的 URL。搜索引擎机器人会在遇到该状态码时触发更新操作,在其索引库中修改与该资源相关的 URL 。 注意了:浏览器自动重定向,不管代码怎么写都会自动重定向到第一次你永久重定向的URL,没办法,这时候你只能清楚浏览器缓存 编码 含义 处理方法

SAP Fiori里两种锁机制(lock)的实现

ぐ巨炮叔叔 提交于 2019-12-26 00:47:12
方法1: ETAG机制 SAP CRM Fiori采用了这种机制。 看一个具体的例子来理解。假设我用用户名Jerry选中了这个ID为3456的Opportunity,点击Edit按钮之后: 会触发一个读操作发到后台: 后台响应这个读请求,并且在响应的头部字段ETAG里写入了对应的值。 这个26AE结尾的ETAG的值可以由应用程序采取不同的逻辑计算,可以直接采用请求节点对应的最后修改时间戳(Last Changed Timestamp), 例如下面这段ABAP代码: 也可以基于数据的完整内容计算一个HASH值出来作为ETAG返回给Fiori UI: 现在我用另一个用户,对同一个Opportunity做了修改,成功保存。然后再回到用户Jerry的这个编辑窗口,此时Jerry根本不知道该Opportunity已经被另一个用户修改了。Jerry修改了Opportunity的Name字段,点击保存按钮。 收到这个提示信息。 从Chrome Development Tool里能观察到,当Jerry点击了保存按钮后,发送到后台的请求的头部包含了一个If-Match字段,这个字段的值就是Jerry第一次点击编辑按钮时,后台返回给Jerry的26AE结尾的ETAG字段。 背后发生了什么事请呢?在框架的方法CHECK_BEFORE_MODIFICATION里,框架会把Fiori