草庐IT

php - 如果未修改,使 PHP 页面返回 "304 Not Modified"

我有一个PHP文件,它每次都会使用相同的$_GET参数返回相同的东西——它是确定性的。不幸的是,为了提高效率(经常请求此文件),每当请求PHP页面时,Apache默认为“200OK”响应,从而使用户再次下载该文件。有什么方法可以发送304NotModifiedheader当且仅当参数相同时?奖励:我可以为其设置一个过期时间,以便如果缓存页面超过三天,它会发送“200OK”响应吗? 最佳答案 如果不自己缓存页面(或至少是它的Etag),您就无法真正使用304。完整的缓存算法有点超出范围,但总体思路是://theactualpage所有

HTTP 协议请求头 If-Match、If-None-Match 和 ETag

概述在HTTP协议中,请求头If-Match、If-None-Match、If-Modified-Since、If-Unmodified-Since、If-Range主要是为了解决浏览器缓存数据而定义的请求头标准,按照协议规范正确的判断和使用这几个请求头,可以更精准的处理浏览器缓存,从而达到提高系统性能和减少系统带宽的占用的目的。更精准的处理Web缓存效果是可以很明显的:1、减少了网络交互,加快页面响应速度,增强用户体验;2、减少了网络带宽消耗,因为没有更新的资源就不需要重复返回了,特别是图片、视频、下载文件这类大响应体请求;当请求中存在上述If-xxx时,服务器对附加的条件进行判断,当判定条

android - Retrofit : server returns both ETag and Cache-Control: max-age=60. request < 60s 是否应该使用缓存?

我正在使用Retrofit,配置为使用带缓存的OkHttp。我正在调用这个api:https://api.github.com/users/bod/repos它返回一个Etag和一个Cache-Control:public,max-age=60,s-maxage=60header。我在不到60秒的时间内发出了两个请求,因此我希望第二个请求完全不执行任何网络并根据Cache-Control指令使用缓存。但这不是我所看到的。我猜这是因为Etag指令优先?这是正确/正常/预期的行为吗? 最佳答案 RFC2068HypertextTrans

mongodb - MongoDB 文档中的 ETag 工具 - Java 驱动程序

我的Java应用程序具有访问MongoDB集合的RESTGETapi(使用JAX-RS实现)。我正在尝试引入网络缓存以减少响应时间(通过减少MongoDB端的文档读取)。我正在寻找为资源提供ETag(http://en.wikipedia.org/wiki/HTTP_ETag)的标准方法(资源来自MongoDB集合中的文档),以便MongoDB集合中的ETag每次文档更新时都会自动更新。现在,我可以使用MongoDB文档中的ETag验证HTTP请求(“If-None-Match”)中的ETag,如果两者相同,则返回304(未修改)。现在,WebCache可以将已经缓存的资源返回给客户端

mysql - 在此 MySQL 过程中,如何在列名称中保持 DRY?

我引用了meta表的name、description和user_id列。两次,将来可能更多(谁知道呢?)。这些列用于计算我的元资源的ETag。在未来添加一个有助于计算ETag的列将迫使我更改代码N次,这很糟糕。有没有办法让它变干并将这些列名存储在别处?因为我也想在对元执行INSERT时使用这些列名。IFonly=trueTHEN--CalculateETagonmetafieldsonlyUPDATEmetaSETetag=etag(CONCAT(name,description,user_id))WHEREid=meta_id;ELSE--CalculateEtagonmetafie

ios - AFNetworking 在应该接收 304 时返回 200 - ETag

我正在尝试使用etag来缓存我的图像,第一次它会像它应该的那样下载所有图像,但是第二次它也会这样做,因为它应该进入带有304的失败block。我已经尝试在外部发出请求,但我得到了304,这是我遇到问题的唯一原因是AFNetworkingNSString*urlString=[API_BASE_URL_PHOTOSstringByAppendingPathComponent:[photogetPathToPhoto]];NSString*properlyEscapedURL=[urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF

java - Spring MVC REST 中的 ETag 处理

我正在考虑从使用JAXRS的ApacheCXFRS切换到SpringMVCREST,发现SpringMVCREST当前处理ETag的方式存在一些问题。也许我理解不正确,或者有更好的方法来实现目前使用JAXRS所做的事情?使用ApacheCXFRS,在REST服务内部评估最后修改时间戳和ETag的条件(条件评估实际上非常复杂,请参阅RFC2616第14.24和14.26节,所以我很高兴这是为我完成的).代码看起来像这样:@GET@Path("...")@Produces(MediaType.APPLICATION_JSON)publicResponsefindBy...(...,@Con

php - 如何在 PHP 文件中使用 etags?

您如何在PHP文件中实现etags?我要上传什么到服务器,我要在我的PHP文件中插入什么? 最佳答案 创建/编辑您的.htaccess文件并添加以下内容:FileETagMTimeSize要么将以下内容放在一个函数中,要么将其放在您需要etags处理的PHP文件的顶部: 关于php-如何在PHP文件中使用etags?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/13197479

php - 如何在 PHP 文件中使用 etags?

您如何在PHP文件中实现etags?我要上传什么到服务器,我要在我的PHP文件中插入什么? 最佳答案 创建/编辑您的.htaccess文件并添加以下内容:FileETagMTimeSize要么将以下内容放在一个函数中,要么将其放在您需要etags处理的PHP文件的顶部: 关于php-如何在PHP文件中使用etags?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/13197479

一文讲透HTTP缓存之ETag

无论是前端、后端或者运维同学,在平时的开发工作中,都会和HTTP缓存打交道,大家或多或少都了解HTTP缓存中的ETag字段,它是资源的特定版本的标识符,可以让缓存更高效,并节省带宽。本文系统性的阐述了ETag的起源、生成原理及使用。看完本文后,对于不了解ETag的同学能够知道ETag的来龙去脉,并能马上上手使用;对于熟悉ETag的同学也能做到温故而知新。ETag定义及起源ETag(Entity-Tag,下文简称:ETag)是万维网协议HTTP的一部分,它是HTTP为Web缓存验证提供的多种机制之一,它允许客户端发出条件请求。这种机制允许缓存更有效并节省带宽,因为如果内容没有更改,Web服务器不