三种 .htaccess 过期规则之间的区别

2023-11-21

以下三个 .htaccess 规则之间有什么区别以及何时使用每个规则,是否有任何特殊用例更喜欢其中一个?:

Header set Cache-Control "max-age=290304000"
Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT"
ExpiresDefault "access plus 10 years"

Header是一个指令模组头允许修改 HTTP 标头字段。在这种情况下Header set有效设置提到的标头字段缓存控制 and Expires,因此已经存在的标头字段将被覆盖。

第一个指令设置标头字段缓存控制与价值max-age=290304000,它将相对于响应时间的新鲜度生命周期描述为 290304000 秒。

与此相反,第二个指令设置标头字段Expires与价值Thu, 15 Apr 2020 20:00:00 GMT它以绝对时间值描述新鲜度寿命。

Both 缓存控制’s max-age值和Expires过期时间戳可以转换为其他时间戳:

4.2.1.计算保鲜期

缓存可以计算新鲜度寿命(表示为 freshness_lifetime)通过使用第一个匹配的响应 下列的:

  • ...

  • 如果 max-age 响应指令 (第 5.2.2.8 节) 存在, 使用它的值,或者

  • 如果 Expires 响应头字段 (第 5.3 节) 存在,使用 其值减去 Date 响应头字段的值,或者

  • ...

但如果两者都在的话缓存控制’s max-age优先于Expires:

如果响应包含带有 max-age 的 Cache-Control 字段 指令(第 5.2.2.8 节),接收者必须忽略过期 场地。同样,如果响应包含 s-maxage 指令 (第5.2.2.9节),共享缓存接收者必须忽略 Expires 场地。在这两种情况下,Expires 中的值仅用于 对于尚未实现 Cache-Control 字段的接收者。

无需手动设置这些 HTTP 缓存控制标头字段,mod_expiresExpiresDefault指示允许轻松设置 HTTP 缓存。新鲜度寿命可以用绝对值或相对值来描述,或者相对于响应时间(即相对于响应时间)。access/now)或相对于所请求文件的修改时间(即modification)。它同时使用缓存控制 and Expires.

在这种情况下,第三个指令将默认的新鲜度设置为从响应时间起 10 年。

我会使用 mod_expires 进行 HTTP 缓存控制,而不是手动执行Header。它更加方便,允许相对和绝对保鲜时间并同时使用缓存控制 and Expires.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三种 .htaccess 过期规则之间的区别 的相关文章

  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是
  • 将非 www 和非 http 重定向到 https

    昨天我在服务器上安装了 SSL 从那以后我无法访问某些页面 www example com amsterdam shoes example com 阿姆斯特丹 两者都不会重定向到 https 甚至不会重定向到 http www exampl
  • 如果django项目位于子文件夹和子域中,如何编写.htaccess?

    我的 django 站点的路径是 staging ninjawebsite com clients project 我希望将其视为基本网址 django 项目位于public html clients project子文件夹 一切似乎都工作
  • 如何进行有条件的 .htaccess 密码保护

    我正在尝试使用 htaccess 对特定网址进行密码保护 不同的 url 指向相同的文件 但工作方式不同 我现在只需要用密码保护一个网址 我正在尝试使用 setenvif 来执行此操作 但它似乎不起作用 我可能不完全理解 apache se
  • 将 .com 重定向到 .htaccess 中的 .org

    我将domain com 和domain org 作为指向同一虚拟主机的别名 如何使用 htaccess 将所有domain com 请求重定向到domain org 你可以使用模组重写 http httpd apache org docs
  • 如何设置响应文件名而不强制“另存为”对话框

    我在某些响应中返回一个流 设置适当的content type标头 我正在寻找的行为是这样的 如果浏览器能够呈现给定内容类型的内容 那么它应该将其显示在浏览器窗口中 如果浏览器不知道如何呈现内容 那么它应该显示 另存为 对话框 其中文件名应该
  • NoInitialContextException:heroku 战争部署

    我一直在开发一个 J2EE 项目 并且在其中使用连接池 也通过部署在 heroku 上的数据库进行访问 我使用以下代码来设置 Connection 对象 Context initContext new InitialContext Cont
  • 如何阻止用户通过url访问css文件和图像

    我在用 htaccess防止用户通过 url 访问文件 线路 RewriteRule frontend assets css index L R 工作正常 它阻止用户访问 css 文件 然而 RewriteRule frontend ass
  • 从子域中的 ../ 路径

    假设我创建了一个子域 http subdomain mydomain com http subdomain mydomain com 最初是在这个网址 http mydomain com subfolder folder http mydo
  • 客户端/服务器使用哪些 Cache-Control 标头值?

    我试图了解哪些值Cache Control将在请求中使用 并将在响应中使用 This https stackoverflow com questions 42652931 why use cache control header in re
  • Centos 与 Plesk11.x

    我正在使用 Centos 和 Plesk 11 x 以及这篇文章如何获取 RHL 的 Apache mod jk 连接器 https stackoverflow com questions 33381933 how to obtain ap
  • Codeigniter子域路由

    我正在尝试在 CodeIgniter 框架上运行的网站上设置博客脚本 我想在不对现有网站代码进行任何重大代码更改的情况下执行此操作 我认为创建一个指向另一个控制器的子域将是执行此操作的最干净的方法 我设置新设备所采取的步骤Blog涉及控制器
  • 新部署后,React 应用程序必须清除浏览器缓存

    我们正在使用 Jenkins 管道在 apache 服务器上部署 React 应用程序 当我们部署新代码时 大多数新功能都可以正常工作 但并非所有更改都反映浏览器中的最新内容 用户必须打开隐身窗口或清除缓存才能看到新功能 我见过一些相关的解
  • htaccess 选项-索引有什么用?

    我查看了 apache org 网站上的解释 但它没有以我能理解的方式解释 我在这里找到了一些信息 htaccess 文件选项 子目录索引 https stackoverflow com questions 1767785 htaccess
  • 如何关闭 Zend Server 中的默认 HTTP 状态代码错误?

    每次我在 PHP 代码中返回一些状态代码时 Zend Server 都会在我的网站底部附加以下错误 带有我返回的 HTTP 代码的消息 例如 如果我返回 401 它会在我的 401 页面上附加另一个 401 错误 有什么办法可以关掉它吗 我
  • 仅使用 mod_rewrite 重定向主页

    我有一个需要重定向的网站 但我不能只重定向 目录 因为服务器上的文件夹中还有其他网站 这样做也会重定向它们 不好 因此 我的 htaccess 文件包含一堆针对各个 HTML 页面的 301 重定向 并且这些文件工作得很好 但我需要重定向主
  • 连接到 mysql 服务器(localhost)非常慢

    实际上有点复杂 摘要 与数据库的连接非常慢 页面渲染大约需要 10 秒 但页面上的最后一条语句是一个回显 当页面在 Firefox 中加载时我可以看到它的输出 IE 是相同的 在谷歌浏览器中 只有在加载完成后输出才可见 不同浏览器的加载时间
  • 如何在 apache 中访问唯一 ID?

    如何访问 apache 跟踪每个请求的 unique id 我想在它调用的任何 php 脚本中跟踪它 并记录每个请求 我删除了以下行的评论http conf file LoadModule unique id module libexec
  • 主机 localhost 不允许连接到此 MySQL 服务器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不小心删除了我的用户表 删除了所有用户 现在每当我尝试访问我的数据库时 它都会说 主机本地主机不允许连接到此 MYSQL 服务器 我试过
  • https 重定向 laravel .htaccess 之后删除 /public

    我有一个 Laravel 页面部署在共享主机中 当我强制 http 请求重定向到 https 时 url 包含 public 我的根 htaccess 是 RewriteEngine on RewriteCond REQUEST URI p

随机推荐