覆盖 HTTP 响应中的“缓存控制”值

2023-11-25

我有一个网页,当我访问材料时,该网页返回以下标头:

HTTP/1.1 200 OK
Date: Sat, 29 Jun 2013 15:57:25 GMT
Server: Apache
Content-Length: 2247515
Cache-Control: no-cache, no-store, must-revalidate, max-age=-1
Pragma: no-cache, no-store
Expires: -1
Connection: close

使用chrome扩展,我想修改这个response header以便材料实际上被缓存而不是浪费带宽。

我有以下示例代码:

chrome.webRequest.onHeadersReceived.addListener(function(details) 
    {
        // Delete the required elements
        removeHeader(details.responseHeaders, 'pragma');
        removeHeader(details.responseHeaders, 'expires');

        // Modify cache-control
        updateHeader(details.responseHeaders, 'cache-control', 'max-age=3600;')

        console.log(details.url);
        console.log(details.responseHeaders);

        return{responseHeaders: details.responseHeaders};
    },
    {urls: ["<all_urls>"]}, ['blocking', 'responseHeaders']
);

它正确地将标头修改为类似这样的内容(基于 console.log() 输出):

HTTP/1.1 200 OK
Date: Sat, 29 Jun 2013 15:57:25 GMT
Server: Apache
Content-Length: 2247515
Cache-Control: max-age=3600
Connection: close

但根据我试图检查的一切,我看不到任何证据表明这确实发生了:

  1. The cache不包含该文件的条目
  2. The Network选项卡中的Developer Console显示 HTTP 响应没有任何变化(我尝试将其更改为甚至是微不足道的修改,只是为了确保它不是错误,但仍然没有变化)。

我能找到的唯一真正的提示是这个问题这表明我的方法仍然有效,这一段关于webRequest API 文档这表明这行不通(但没有解释为什么我无法得到任何改变):

请注意,Web 请求 API 呈现了网络的抽象 堆栈到扩展。在内部,一个 URL 请求可以分为 多个 HTTP 请求(例如获取单个字节范围 来自大文件)或者可以由网络堆栈处理,无需 与网络通信。因此,API 不 提供发送到网络的最终 HTTP 标头。为了 例如,所有与缓存相关的标头对于 扩大。

没有任何效果(我无法修改HTTP response header完全)所以我认为这是我首先关心的问题。

关于我可能出错的地方或者如何找到这里出错的地方有什么建议吗?

如果不可能,还有其他方法可以实现我想要实现的目标吗?


我最近花了几个小时尝试缓存文件,并发现chrome.webRequest and chrome.declarativeWebRequest APIs cannot强制缓存资源。绝不。

The Cache-Control(和其他)响应标头可以更改,但它仅在getResponseHeader方法。不在缓存行为中。

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

覆盖 HTTP 响应中的“缓存控制”值 的相关文章

  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的
  • 将 CSV 复制到 Amazon RDS 托管的 Postgresql 数据库

    我有一个使用 Amazon 的 RDS 服务托管的数据库 我正在尝试编写一个 Web 服务来更新所述数据库 我遇到的问题是它不允许我使用 COPY 命令 因为我收到此错误 错误 必须是超级用户才能复制到文件或从文件复制 我正在使用我为数据库
  • Docker - 如何通过 API 将输入发送到程序

    我一直在使用 Docker 的远程 API 创建一个容器 在其中运行一个 Python 程序 附加到该容器并将写入 stdout 的输出流式传输到网络 现在 我希望我的 Python 程序接受来自 stdin 的用户输入 例如 import
  • 如何为所有用户安装 Anaconda python?

    Anaconda python 发行版 https store continuum io cshop anaconda 非常方便地部署科学计算环境 SCE 并根据需要切换python版本 默认情况下 安装会将 python 定位到 anac
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X
  • 如何获取所有mysql元组结果并转换为json

    我能够从表中获取单个数据 但是当我试图获取表上的所有数据时 我只得到一行 cnn execute sql rows cnn fetchall column t 0 for t in cnn description for row in ro
  • Mercurial:带参数的别名

    我想创建一个别名 以便在运行时 hg pushbranch lt
  • iOS 中是否需要 Google App Indexing SDK 才能使用 Google DeepLinking?

    我想用谷歌应用程序索引与我的网页和 iOS 应用程序 我支持通用链接 or 深层链接用谷歌术语 与苹果Search并相应地设置我的网页 From 谷歌文档 https developers google com app indexing i
  • 在构建内核模块时为什么需要 /lib/modules? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在Kbuild树中 当我们编写一个简单的hello ko程序时 为什么我们需要在构建规则中使用 C lib module 为什么需要这样做
  • VBA全局类变量

    我的障碍是试图让多个子程序识别类变量 当我尝试全局声明它们时 出现编译错误 无效的外部过程 然后 当我运行公共函数或子函数来声明变量时 它们在其他子函数中保持未定义状态 我希望多个子程序能够识别变量 因为它们的值应该通过用户窗体进行更改 然
  • SQLite 中的累积求和值

    我正在尝试在 SQLite 中执行值的累积和 我最初只需要对一列求和并获得代码 SELECT t MyColumn SELECT Sum r KeyColumn1 FROM MyTable as r WHERE r Date lt t Da
  • SSIS 包失败并出现“无法获取连接”错误

    我们有一个从 Web 服务启动的 SSIS 包 在开发环境中 一切正常 但在 QA 环境中 尝试运行包时出现以下错误 无法获取连接 ConnectionName 连接可能未正确配置 或者您可能没有正确的权限这个连接 连接使用 SQL 登录
  • 长/宽数据到宽/长

    我有一个数据框 如下所示 import pandas as pd d decil 1 decil 1 decil 2 decil 2 decil 3 decil 3 decil kommune AA BB AA BB AA BB 2010
  • Postgresql:SERIAL 在约束 INSERT 失败时递增

    有一个像这样的简单表结构 CREATE TABLE test id INT PRIMARY KEY sid SERIAL 我注意到如果我尝试插入一行但它未通过约束测试 即主键约束 SERIAL计数器无论如何都会增加 所以下一次成功插入 si
  • 如何使用socket.io发送图像文件(二进制数据)?

    我无法从以下位置发送数据Android Client to NodeJS Server I use Socket IO 客户端 https github com socketio socket io client java我的客户端中的ja
  • 没有 Neo4Django 的 Django 和 Neo4j

    我正在使用 Neo4j 以及 Postgres 构建一个 Django 应用程序 我发现这个 Django 集成称为新4django https github com scholrly neo4django 我想知道是否可以只使用neo4r
  • Cycle2 初始化事件未触发

    我使用 Cycle2 作为基本的轮播 我的幻灯片项目有时在其数据中包含一个 url 因此我必须使用 Cycle2 api 事件来使用该 url 当它存在时 我的问题是 虽然 cycle after 事件触发正常 但初始化事件都不会触发 因此
  • 令牌返回后,Google 操作和帐户关联失败

    尝试使用 OAuth2 授权代码流在 Web 模拟器中测试身份验证 https developers google com actions tools web simulator https developers google com ac
  • 缓存 Flask-登录 user_loader

    我有这个 login manager user loader def load user id None return User query get id 在我引入 Flask Principal 之前它运行得很好 identity loa
  • (Unity 中的 Firebase 数据库)在 Android 构建期间在 Temp 中缺少classes.jar

    I am using Firebase Database in my Unity project but I am having some issues when building the project for android It ru

随机推荐

  • 从 Pandas 专栏中删除 Twitter 提及

    我有一个数据集 其中包含来自 Twitter 的推文 其中一些也有用户提及 例如 thisisauser 我尝试在进行其他清理过程的同时删除该文本 def clean text row options if options lowercas
  • perl 反引号:使用 bash 而不是 sh

    我注意到 当我在 perl 中使用反引号时 命令是使用 sh 而不是 bash 执行的 这给我带来了一些问题 我怎样才能改变这种行为 以便 perl 将使用 bash 附言 我尝试运行的命令是 paste filename lt cut d
  • 如何在 java 7 中启用 TLSv1.2?

    我正在尝试使用命令 mvn Dhttps protocols TLSv1 TLSv1 1 TLSv1 2 install mvn Dhttps protocols TLSv1 2 install 在具有 java 1 7 的计算机中启用 T
  • 实体框架 - 实体只读属性映射到相关表的列

    我有一个有趣的问题需要解决 但是虽然很常见 但看起来使用实体框架不容易实现 有两个表 Player Id TeamId FirstName LastName Team Id Name IsProfessional 玩家只能属于一支球队 使用
  • R 闪亮中不存在此 Font Awesome 图标(“齿轮”)

    我今天遇到了一个奇怪的情况 我在 R Shiny 上开发一个应用程序几天了 它在我的笔记本电脑上运行 今天我更换了电脑 安装了新的 Windows 当我运行我的应用程序时 它给了我这个错误 This Font Awesome icon ge
  • 将带有默认值的数组作为参数传递给 int main()

    我很难将数组作为参数传递给int main 与默认值 例如 int main int a 效果很好 一样 int main int a 1 Passing int main 数组也能很好地工作 int main int a 3 然而 将这两
  • 如何从字符串确定日期格式?

    这个问题今天已经被问过 但所有者似乎已经删除了它 即使它有 4 票赞成 不过这个问题太有趣了 我决定再次自己发帖 我有一个 Javascript 对象 它有一个带有日期字符串的属性 现在我想为该属性设置一个新的日期时间 但是在不知道其格式的
  • 如何在Android上管理startActivityForResult

    在我的活动中 我通过以下方式从主要活动中调用第二个活动startActivityForResult 在我的第二个活动中 有一些方法可以完成此活动 可能没有结果 但是 只有其中一个方法返回结果 例如 我从主要活动中调用第二个活动 在此活动中
  • Sqlite:如何重置所有数据库表?

    我想要一个调试函数来执行此操作 但我不知道该函数是否已经存在 为我的每个表检查并使用 删除表 将是一件痛苦的事情 帮助表示赞赏 由于数据库只是一个文件 因此您确实可以删除它 如果您想要更自动化的操作 您可以使用以下命令以编程方式完成所有操作
  • 内核如何通知用户空间程序中断发生

    我正在编写一个用户空间程序和一个内核空间设备驱动程序 目标 一旦发生中断 用户空间程序需要快速执行某些操作 我的天真的方法 用户空间程序使用ioctl调用wait event interruptible 内核ISR调用wake up int
  • CJS 和 ES6 模块之间的语法差异

    在 CJS 模块中我会使用export and var plugin require plugin 导出 导入在 ES6 模块中我会使用export and import as plugin from plugin 导出 导入 还有更多语法
  • 如何使用某些 CGContext 函数重置以标识“当前变换矩阵”?

    我正在 CTM 上进行一系列平移和旋转 在某些时候我需要将其重置为身份 然后再进一步进行转换 我找不到任何正确的方法来做到这一点 显然 应该有一个名为 CGContextSetCTM 左右的函数 并且由于效率是关键 所以我不想使用 CGCo
  • 更改 Erlang 中的默认“home”路径以解决 RabbitMQ 启动错误

    我是rabbitmq的新手 也是erlang的新手 我遇到了一个问题 我无法启动rabbitmq 因为 erlang cookie 的 主 位置已更改 我已经运行命令 init get argument home 返回 ok H 这是一个问
  • 如何在 Android Studio 中使用 android.test.mock

    我正在尝试使用模拟上下文在 Android Studio 中对 Android 项目进行单元测试 问题是 包android test 在项目中不可见 我不确定应该向 Gradle 添加什么才能导入它 我试过com android suppo
  • rvm install ruby​​-1.9.3-p286:运行“make -j 9”时出错(OSX:Mountain Lion)

    Running rvm install ruby 1 9 3 p286给我这个错误 Error running make j 9 please read Users epeterson rvm log ruby 1 9 3 p286 mak
  • gpg:跳过“XXBDXX4E”:秘密密钥不可用。 gpg:签名失败:密钥不可用

    我按照这个教程 https help github com articles signing commits using gpg 我尝试在提交时签名 如下所示 https github com spring guides tut sprin
  • 强制转换派生到基础字典

    我有 2 本词典 如何将 DerivedClass 字典分配给 DerivedClass 字典 下面的代码不起作用 我怎样才能改变它 public class BaseClass public void DoWork public int
  • 如何监控 Meteor.com 服务器端日志

    我正在寻找一种从部署为 myapp meteor com 的 Meteor 应用程序获取服务器日志的方法 理想情况下 我可以使用一个配置或包将远程服务器的日志实时发送到本地终端 Linux OSX 有没有直接的方法来实现这一目标 使用内置的
  • 在没有 JNLP 的情况下启动 Windows Jenkins 代理

    构建了一个新的 Windows Server 2016 作为 jenkins 协调构建的目标 我们不应该再使用oracle java 所以我得到了coretta openJDK OpenJDK 不再支持 javaws 可执行文件不随其一起提
  • 覆盖 HTTP 响应中的“缓存控制”值

    我有一个网页 当我访问材料时 该网页返回以下标头 HTTP 1 1 200 OK Date Sat 29 Jun 2013 15 57 25 GMT Server Apache Content Length 2247515 Cache Co