利用图片Etag判断用户

php静态文件返回304技巧分享 有时一些静态文件(如图片)会由php输出,会发现请求都是200,静态文件每次都去服务器上请求太浪费资源了,这时如何让浏览器缓存图片呢?就需要我们在php中输出304了。 我们可以利用php中的 HTTP_IF_MODIFIED_SINCE 结合etag来干这事。Etag没有明确规定的格式,我们可以用文件修改时间的md5值,代码如下: 复制代码 代码如下: private function _addEtag($file) {     $last_modified_time = filemtime($file);     $etag = md5_file($file);     // alway 立即下载

原理:不使用Javascript,SESSION,COOKIES,FLASH。
            利用图片Etag识别用户
            1.根据用户的 REMOTE_ADDR 与 HTTP_USER_AGENT 生成唯一Etag。
            2.将Etag输出到客户端。
            3.获取 HTTP_IF_NONE_MATCH 判断是否同一个用户访问。

.htaccess rewrite

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteRule ^pic.png$ index.php?pic=1 [NC]

</IfModule>

源码 index.php:
<?
define('SECRET', 'j8s91slksd9ab');  // secret
define('LOG', 'data.log');          // 保存用户数据

// 生成 etag
function genEtag(){
    if(!empty($_SERVER['HTTP_IF_NONE_MATCH'])){
        $etag = $_SERVER['HTTP_IF_NONE_MATCH'];
    }else{
        $etag = substr(md5(SECRET. substr(md5($_SERVER['REMOTE_ADDR']),0,16). substr(md5($_SERVER['HTTP_USER_AGENT']),0,16)),0, 16);
    }
    return $etag;
}

// 显示图片
function showPic($etag){
    header('content-type:image/png');
    header('Etag:'.$etag);

    $im = imagecreate(1, 1); // 生成1x1px的透明图片
    imagecolorallocatealpha($im, 0, 0, 0, 127);
    imagepng($im);
    imagedestroy($im);

    exit();
}

// 获取存储的数据
function getData(){
    $logdata = file_exists(LOG)? file_get_contents(LOG) : '';
    if(!$logdata){
        $data = array();
    }else{
        $data = json_decode($logdata, true);
    }
    return $data;
}

$etag = genEtag();

$pic = isset($_GET['pic'])? $_GET['pic'] : 0;
if($pic==1){
    showPic($etag);
}

$data = getData();

// 提交表单
$send = isset($_POST['send'])? $_POST['send'] : 0;

if($send==1){
    $txt = isset($_POST['txt'])? $_POST['txt'] : '';
    if($txt!=''){
        $data[$etag] = $txt;
        file_put_contents(LOG, json_encode($data),true);
    }
}

$txt = isset($data[$etag])? $data[$etag] : ''; // 用户输入的数据
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title> PIC ETAG </title>
 </head>

 <body>
  <img src="pic.png">
  <form method="post" action="index.php">
  <p>请填写讯息:</p>
  <p><textarea name="txt" style="width:450px;height:150px"><?=$txt ?></textarea></p>
  <p><input type="submit" value="提交"></P>
  <input type="hidden" name="send" value="1">
  </form>
 </body>
</html>


【扫地机器人】详细介绍扫地机器人软硬件测试和场景化测试 本文提出2025版扫地机器人全生命周期测试方案,涵盖实验室仿真、硬件台架、客户实景等全流程验证。测试以"清洁率≥95%、覆盖率≥98%、MTBF≥1000h"为核心指标,采用数字孪生与120套真实场景结合的双V模型。重点包括:传感器精度(LDS误差<±10mm)、清洁系统性能(10g粉尘吸入率≥99%)、动力续航(800次循环容量保持≥80%)等硬件测试;以及SLAM重定位(误差<5cm)、AI识别(mAP>92%)等软件验证。方案特别针对宠物家庭(毛发缠绕率≤3%)、 阅读详情

相关推荐

CST实战:5分钟搞定圆极化天线轴比分析(含远场设置技巧)

本文提供了一份CST Studio Suite圆极化天线轴比分析的实战指南。文章详细讲解了轴比的概念与工程标准,并重点演示了如何正确设置远场监视器以获取Axial Ratio数据,包括关键步骤与后处理技巧。最后,通过植入式天线在生物组织环境中的案例,分析了复杂环境对轴比性能的影响及优化思路。

nokia的博客 997

etag php,PHP使用图片Etag判断用户的实例代码

原理是这样的:不使用Javascript,SESSION,COOKIES,FLASH。面是使用图片的Etag信息识别用户:1,根据用户的 REMOTE_ADDR 与 HTTP_USER_AGENT 生成唯一Etag。2,将Etag输出到客户端。3,获取 HTTP_IF_NONE_MATCH 判断是否同一个用户访问。一,htaccess文件(.htaccess rewrite)复制代码 代码示例:R...

weixin_36420854的博客 216

用RK3588+FPGA搞定Cameralink高速相机?这份保姆级硬件选型与接口配置指南请收好

本文详细介绍了如何利用RK3588与FPGA构建Cameralink高速相机系统,涵盖硬件选型、接口配置及性能优化等关键步骤。通过异构计算架构和精准的带宽分配,实现工业视觉检测和科研成像领域的高效解决方案,特别适合需要实时处理的复杂应用场景。

weixin_30493401的博客 642

通过http协议中的etag进行用户追踪

1 什么是用户追踪 用户追踪是同过一个唯一标识能定位到一个用户。例如A用户访问网站,网站生成一个唯一cookie,随后用户请求都带上这个cookie,那么通过这个cookie就可以分析用户的访问或操作行为。 通过浏览器通常进行用户追踪使用的常用手段如几种,但不仅限于这几种。 cookie localStorage sessionStorage ip userAgent canvas指纹 除此之...

Revivedsun的专栏 1059

分布式优化 (Distributed Optimization) 算法详解及案例分析

分布式优化是一种将优化问题分解为多个子问题并在多个计算节点上并行求解的方法。其目标是通过分布式计算资源高效地求解大规模优化问题。

闲人编程的博客 2709

【Bug已解决】npm install -g @anthropic-ai/claude-code 出现 EACCES: permission denied 解决方案

方案适用场景推荐指数nvm 管理 Node长期开发环境,一次配置永久生效⭐⭐⭐⭐⭐修改 npm 全局目录不想引入 nvm,快速解决⭐⭐⭐⭐修复现有目录权限之前用过 sudo 装包,需要修复⭐⭐⭐Windows 管理员/改目录Windows 平台专用⭐⭐⭐⭐官方原生安装脚本想彻底避开 npm 权限问题⭐⭐⭐⭐报的本质是npm 全局安装目录的属主权限与当前执行用户不匹配,而不是 npm 或 Claude Code 本身有问题。不要用sudo"强行"解决。

一键难忘的博客 1万+

REST笔记(五):你应该知道的HTTP头------ETag

在HTTP1.1规范中,新增了一个HTTP头信息:ETag。对Web开发者来说,它是一个非常重要的信息。它是用作缓存使 用的两个主要的头信息之一 (另一个是Expires)。除此之外,在REST架构中,它还可以用于控制并发操作(上节中已经大 致介绍AtomPub中控制并发的流程)。那么ETag是什么?它又几种类型?强ETag与弱ETag之间有什么区别。?如何计算 ETag值?它与Last-Modi...

weixin_33811539的博客 1165

五万字解析【ROOT 入门指南】

本文是cern官方root入门指南的初步翻译版,还在进一步校对中....

荷塘阅色 208

Nginx Etag学习

Nginx Etag学习Nginx Etag什么是EtagLast-Modified / If-Modified-SinceEtag工作原理为什么要使用EtagEtag字符含义强Etag和弱EtagEtag丢失问题Etag配置Etag带来的问题 Nginx Etag 什么是Etag Etag其实是一个页面的Hash值,当浏览器刷新页面的时候,浏览器会发送页面的Etag值,让服务器进行比较,服务器如...

libinbin_1014的专栏 5109

把 ABAP 选择屏幕 Selection Screen 打造成可维护的交互面板:常用屏幕元素与动态控制全解析

本文详细介绍了ABAP报表中Selection Screen的设计技巧,包括空行(SKIP)、横线(ULINE)、注释(COMMENT)等基础元素的使用方法,以及如何通过MODIF ID实现动态界面调整。重点讲解了行内布局(BEGIN OF LINE)、按钮(PUSHBUTTON)和区块(BLOCK)等高级功能,帮助开发者将选择屏幕从"能用"提升到"好用、易扩展、可维护"的水平。文章还分享了项目实践中的命名规范和分组策略,特别适合需要优化ABAP报表用户体验的开发人员

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 332

YOLOv11改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、恶劣天气等问题

在一些特定情况下,目标检测任务由于多种因素的影响,变得更加复杂和困难。以下是几类常见的困难目标检测场景:1. 小目标检测定义:小目标检测是指当目标在图像中的占比非常小时,模型需要准确识别和定位这些目标。典型场景包括远程监控、卫星图像分析等。挑战1. 低分辨率:由于目标在图像中占据像素较少,细节缺失,特征提取难度增加。2. 特征不足:小目标缺乏明显的形状和纹理特征,容易被复杂背景淹没。3. 检测难度大:由于小目标与背景之间的对比度较低,误检的几率上升。4. 数据不平衡。

qq_64693987的博客 4万+

使用ETag识别ajax,使用 ETag 识别唯一用户

在网络上,Cookie 是识别用户的基础,无数的广告投放平台,通过 Cookie 来记录用户的 ID,监测用户看过什么广告、点过什么广告、看过哪些网页,通过这些信息推算用户的兴趣爱好,进而再推送更加精准的广告。越来越多的浏览器推出“无痕浏览”、“隐私模式”等功能, 360 等安全卫士软件也自带了清理 Cookie 的功能,这就导致常规使用 Cookie 识别用户身份的手段越来越不准确,这里介绍另一...

weixin_42356073的博客 357

QML从入门到实战 - 完整学习路线

想入门 QML 开发?来 “从零开始学 QML” 专栏,海量源码 + 实战案例 + 大型项目拆解,手把手教你搞定跨平台 UI 设计,小白也能轻松掌握!

BenBierBa的博客 3482

Http header Etag

From:ETAG 此文详细说明了ETAG的作用。我发现网上很多人都在询问ETAG的对于优化网站的作用,有些人直接建议关闭ETAG。这篇博文可以完整的说明ETAG的作用,是否关闭,或者如何配置,要根据自己网站的情况而定。 开始ETAG测试 首先在浏览器输入以下访问地址 比如我们访问某网站:http://xxxxxxxx/ 第一次的http请求代码如下(只包含头部信息) ——

lianliange85的专栏 833

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ETag

ETagHTTP响应头是资源的特定版本的标识符。这可以让缓存更高效,并节省带宽,因为如果内容没有改变,Web服务器不需要发送完整的响应。而如果内容发生了变化,使用ETag有助于防止资源的同时更新相互覆盖(“空中碰撞”)。 如果给定URL中的资源更改,则一定要生成新的Etag值。 因此Etags类似于指纹,也可能被某些服务器用于跟踪。 比较etags能快速确定此资源是否变化,但也可能被跟踪服务器永久存留。 缓存 一、概述 缓存通俗点讲,就是将已经得到的‘东东’存放在一个相对于自己而言,尽可能近的地方,以便下次

More reading and learning to become excellent 991

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

利用Etag来跟踪用户行为

转载:http://www.oschina.net/translate/cookieless-cookies?from=20130826不使用 Cookie 的“Cookie”技术有另一种方法可以跟踪用户而不使用cookies或Javascript。这种方法已经被用于无数网站,但几乎没人人们知道。本页解释这种方法是如何运作的,以及是如何保护你自己的。这种跟踪方式无需使用:Cooki...

weixin_30677475的博客 263

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

etag java_HTTP头信息中的参数Etag

服务器如果是集群,不同服务器返回的HttpHeader中的Etag参数不一样。如果是图片是网络服务器如果是集群,不同服务器返回的 Http Header 中的 Etag 参数不一样。如果是图片是程序生成的,我们可以用 no-cache 这些 header 来控制,但如果这些图片是 apache 或 nginx 等呢?下面开始介绍 Etag:Etag在HTTP1.1中有介绍,主要的作用就是在(css...

weixin_34577766的博客 491

ETag 开源项目教程

ETag 开源项目教程 项目介绍 ETag 是一个用于生成 HTTP ETag 头的中间件,适用于 Koa 框架。ETag 的主要功能是帮助服务器高效地处理缓存,通过生成资源的唯一标识符(ETag),客户端可以在后续请求中使用这个标识符来验证资源是否有更新。如果没有更新,服务器可以返回 304 Not Modified 状态码,从而减少带宽使用和服务器负载。 项目快速启动 安装 首先,你需要安装 ...

gitblog_00436的博客 981

ETag使用

关于ETag相关知识:https://blog.youkuaiyun.com/kikikind/article/details/6266101 https://blog.youkuaiyun.com/jkxiaoxing/article/details/51499894具体代码:String clientEtag = request.getHeader("If-None-Match"); if (md5....

Faylinn的博客 2124

Expires,Cache-Control,Last-Modified,ETag

Expires、Cache-Control、Last-Modified、ETag都是在http response的返回header中 用来控制浏览器客户端缓存行为的。 1.Expires在HTTP/1.0中已经定义,Cache-Control:max-age=xxx在HTTP/1.1中才有定义, 为了向下兼容,仅使用max-age不够。 当某一个web资源被访问后,会被浏览器缓存,在以后对

交换一个思想,能得到俩思想 1万+

协商缓存实现:ETag与Last-Modified实战应用(附代码)

本文深入解析HTTP协商缓存中的ETag和Last-Modified机制。ETag作为资源内容的唯一哈希标识,通过If-None-Match头实现缓存验证;Last-Modified则基于资源修改时间,通过If-Modified-Since头进行判断。文章详细介绍了二者的实现原理,包括ETag的哈希计算和Last-Modified的时间获取方法,并提供了Python示例代码。同时探讨了二者可能出现的冲突及处理建议(优先使用ETag),最后通过Tornado框架演示了完整的协商缓存实现流程。这些技术能有效减少

fykam的博客 1007

关于ETag和Gzip的基本认知和使用

题引:为了提升用户体验,同时减轻服务器压力和降低网络带宽,技术总监和技术经理决定对APP做缓存处理,包括图片的三级缓存(这里不讨论)和网络请求的数据缓存 ETag的基本认识 ETag的基本使用 Gzip的基本认识 Gzip的基本使用 判读服务器是否返回压缩数据的方式 服务端Nginx配置ETag和Gzip冲突的解决方案 Refer 一、ETag的基本认识以下四篇文章讲解的都是ETag的基本知识:

m_xiaoer的博客 3119

判断链接是否为图片

方式一直接正则匹配URL链接,是否是以.png,.gif,.jpg,.jpeg结尾的。 preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $url);1这个是一个最简单的方式,但是不够精确,因为并不是所有的图片链接都是以图片名字+扩展名结尾的。 方式二用CURL获取图片URL的response header 首先创建一个curl,并将头文件的信息,作...

weixin_30687587的博客 1237

HTTP缓存机制的Etag、Last-Modified、If-None-Match和If-Modified-Since、Expires和Cache-Control笔记

http缓存机制:https://blog.youkuaiyun.com/jutal_ljt/article/details/80021545 http://www.cnblogs.com/chenqf/p/6386163.html 相关文章: 闲聊HTTP闲聊HTTP/2.0闲聊HTTPSHTTP缓存机制的Etag、Last-Modified、If-None-Match和If-Modified-...

卓越无关环境,保持空杯心态——靡不有初,鲜克有终 6115

HTTP头信息中的参数Etag

服务器如果是集群,不同服务器返回的 Http Header 中的 Etag 参数不一样。如果是图片是程序生成的,我们可以用 no-cache 这些 header 来控制,但如果这些图片是 apache 或 nginx 等呢? 下面开始介绍 Etag:        E

深度Java 6192
上一篇: tput 命令行使用说明
下一篇: php output_buffering 缓存使用
傲雪星枫
博客等级 码龄15年 2307粉丝 306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值