首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP文件中使用etags?

如何在PHP文件中使用etags?
EN

Stack Overflow用户
提问于 2012-11-02 22:43:25
回答 2查看 30.7K关注 0票数 22

如何在PHP文件中实现etags?我应该上传什么到服务器,我应该在PHP文件中插入什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-02 22:43:25

创建/编辑.htaccess文件并添加以下内容:

代码语言:javascript
复制
FileETag MTime Size

可以将以下代码放入函数中,也可以将其放在需要etags处理的PHP文件的顶部:

代码语言:javascript
复制
<?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("Etag: $etag"); 

    if (@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $last_modified_time || 
        trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) { 
        header("HTTP/1.1 304 Not Modified"); 
    exit; 
} 
?>
票数 41
EN

Stack Overflow用户

发布于 2021-05-16 07:08:30

https://datatracker.ietf.org/doc/html/rfc7232#section-2.3对应的版本(必须加上etag值):

代码语言:javascript
复制
<?php
$file = __DIR__ . '/myfile.js';
$etag = '"' . filemtime($file) . '"';

// Use it if the file is changed more often than one time per second:
// $etag = '"' . md5_file($file) . '"';

header('Etag: ' . $etag);

$ifNoneMatch = array_map('trim', explode(',', trim($_SERVER['HTTP_IF_NONE_MATCH'])));
if (in_array($etag, $ifNoneMatch, true) || count($ifNoneMatch) == 1 && in_array('*', $ifNoneMatch, true)) {
    header('HTTP/1.1 304 Not Modified');
    exit;
}

print file_get_contents($file);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13197479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档