Symfony2 反向代理 - 基于 cookie 或其他设置分离相同 URL 的缓存

2024-01-06

我使用默认的 Symfony2 反向代理,并且需要根据 cookie 设置单独缓存同一 URL。

该网站通过缩小图像和删除 JavaScript 来提供“基本”网站视图。由于内容相同,我使用了相同的 URL,但缓存当然是一个问题。

我需要能够单独缓存它们(或者只是确保缓存被清除)。

我尝试更改 Vary 标头,通常我将其设置为:

Vary: Accept-Encoding

..并将其设置为:

Vary: Accept-Encoding, basic

..or:

Vary: Accept-Encoding, normal

实际上,这在我的 Mac 上的 Chrome 中效果很好,但 Safari 忽略了它。此时我停止检查其他浏览器。

最好的方法是什么?


Vary:Accept-Encoding 告诉客户端或反向代理为不同的编码单独缓存 url。 (即有/没有 gzip)。

如果您的旧版浏览器不支持 gzip,则在没有 gzip 的情况下为页面提供服务,而对于具有 gzip 的较新浏览器来说,这尤其有用......因此您的反向代理将缓存同一 url 的两个变体。如果没有此设置,您的反向代理可能最终会向不支持它的浏览器提供 gzip 内容...给出不需要的结果。

您正在寻找的可能是ETag http://en.wikipedia.org/wiki/HTTP_ETagheader 有点像用于缓存的“cookie”。

客户端将发送其缓存版本的 etag,然后您可以从应用程序中选择客户端的缓存版本是否有效。

$response = new Response();
$response->setETag(md5('some_identifier'));
if( $response->isNotModified($this->get('request')) )
{
    // automatically returns null content response with http 304 ( not modified ) header
    return $response; 
}
else
{
    // .. otherwise return a new response, possibly with a different ETag

    // $reponse->setEtag(md5('another_identifier'));
    return  $this->renderView('MyBundle:Main:index.html.twig', array(), $response);
}

受到启发this http://tracehello.wordpress.com/2011/05/19/symfony2-http-cache-part3-etags/博文。

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

Symfony2 反向代理 - 基于 cookie 或其他设置分离相同 URL 的缓存 的相关文章

  • Symfony 2 中的可选嵌入形式

    我的系统中有两个实体 Person and Phone如下面的代码 class Person ORM Id ORM Column type integer ORM GeneratedValue strategy AUTO private i
  • 在 Symfony 2 和耦合中集成捆绑包(相关 Dotrine 2 实体)

    据我了解 捆绑是分离功能 假设我有一个UserBundle ABlogBundle 然后我的BlogBundle Post将有一个author引用的字段UserBundle User 这不是违背了 Bundle 的目的吗 我无法交换另一个U
  • 获取实体内的entityManager

    我想使用类似的东西 em this gt getEntityManager 在实体内部 我明白我应该将其作为一项服务但出于某些测试目的 我想从实体访问它 有可能实现吗 我尝试过 em this gt getEntityManager pro
  • 手动渲染 Twig 字符串时禁用 HTML 转义

    我有以下代码将字符串呈现为 HTML 输出 如何阻止它转义 HTML 文本 template who bar params array who gt Foo s twig new Twig Environment new Twig Load
  • 如何使用 gzip 压缩 .net 对象实例

    我想在将数据库查询结果添加到缓存之前对其进行压缩 我希望能够压缩任何引用类型 我有一个用于压缩字符串的工作版本 这个想法基于 scott hanselman 的博客文章http shrinkster com 173t http shrink
  • 如何将 Ajax 与 Symfony2 集成 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找有关 symfony2 中
  • 在 Symfony 2 项目中安装 Bootstrap 主题

    我正在考虑安装这个主题 http bootswatch com superhero 在我的SF2项目中 我注意到页面顶部有4个文件可供下载 即 bootstrap min css 引导程序 css 无变量 bootswatch less 我
  • selenium-server:意外状态 SERVICE_PAUSED

    尝试在 Windows 10 中将 Selenium Server 安装为服务 使用 nssm 失败 并显示Unexpected status SERVICE PAUSED on nssm start selenium server Sel
  • 如何自定义 FOS UserBundle URL

    我已经安装了FOS用户包 https github com FriendsOfSymfony FOSUserBundle我想将网址自定义为 account login account register account logout代替 lo
  • twig json_encode 空 json

    我正在从 API 接收元素列表 所有元素的格式都很好 当我使用树枝转储其中一个时 我得到以下信息 Leg 2695 id null reservation null airportStart AIX LES MILLES airplaneT
  • FOSUserBundle 和 ACL 业务角色

    这个周末我开始学习 Symfony 2 我没有遇到任何问题 因为我认为该框架有详细记录 我正在使用 FOSUserBundle 包进行 ACL 我想知道是否可以使其类似于 Yii 框架 bizRule return Yii app gt u
  • AngularJS:如何缓存从 $http 调用返回的 json 数据?

    如何缓存从 http 调用返回的 json 数据 我使用以下风格的 http 调用 http url SomeWebMethodUrl method POST data query somevalue headers Content Typ
  • Laravel 模型访问器从缓存中获取 - 性能增强

    我在数据库中有一个项目列表 每个项目都可以选择被否决或赞成 这些投票与其他项目字段一起存储在 MySql 中 例如这样的事情 Schema create items function table table gt increments id
  • Symfony2:间歇性高响应时间/缓慢 SessionHandlerProxy::read() 完成

    我看到来自 Symfony2 会话管理器组件的非常奇怪的行为 特别是 SessionHandlerProxy read 函数在我的生产环境中有时会非常慢 Symfony Component HttpFoundation Session St
  • Api平台所需的过滤器

    我正在使用 API 平台 并且我已经定义了一个自定义过滤器 如下所示https api platform com docs core filters creating custom filters https api platform co
  • 是否有任何众所周知的快速持久缓存解决方案? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我的网络爬虫需要非常快速且持久的缓存 它不需要像Java中的ConcurrentSkipListSet
  • 咖啡因与番石榴缓存

    根据这些微观基准 https github com ben manes caffeine wiki Benchmarks事实证明Caffeine https static javadoc io com github ben manes ca
  • 无法覆盖 Symfony2 GeneratorBundle 中的标准骨架视图

    我无法覆盖 GeneratorBundle 的骨架视图 我首先尝试在 app Resources SensioGeneratorBundle sculpt crud views index html twig 中添加我的视图 它不起作用 所
  • 如何为客户端和服务器缓存设置不同的缓存过期时间

    我想让某些页面为客户端提供 10 分钟缓存 为服务器提供 24 小时缓存 原因是如果页面发生变化 客户端将在 10 分钟内获取更新版本 但如果没有任何变化 服务器只需每天重建一次页面 问题在于输出缓存设置似乎覆盖了客户端设置 这是我的设置
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g

随机推荐

  • 如何在 AsyncTask 运行时禁用 Button? (安卓)

    我试图在执行下载任务时禁用按钮 我尝试过使用 setEnabled setVisibility 和 setClickable 我想我尝试了这些选项的所有组合 所有这些都在任务执行时禁用按钮单击事件 但事件仍然以某种方式注册 当我反应按钮时
  • 如何在 Eclipse 4.2 中设置运行时类路径?

    当我从 运行 菜单中选择 运行配置 时 我看不到像以前版本的 Eclipse 中那样名为 类路径 的选项卡 在哪里设置运行时类路径 在 Eclipse 中 查看您想要运行时配置的项目的 项目 gt 属性 选择运行 调试设置 然后选择新的或编
  • jQuery.contains() 无法正常工作

    在以下情况下我应该收到 警报 但我没有收到任何 警报 我正在尝试一个简单的例子jQuery Contains
  • 内联常量是什么意思?

    我正在读这个article https blog codecentric de en 2017 03 akka best practices defining actor props 有这样一段代码 object ChildActor fi
  • 如何在 Spring Batch 中读取复杂的 JSON?

    我下面有一个复杂的 JSON 我正在使用 FlatFileItemReader 阅读它 如何使用自定义的 ComplexJsonRecordSeparatorPolicy 忽略最后一行 firstName Tom lastName Crui
  • Mercurial `hg clone` 但忽略所有子存储库?

    有没有办法克隆带有子存储库的存储库 但不需要 Mercurial 提取所有子存储库 看来虽然hg clone U可以用来获取仓库的空克隆 没有什么可以说服的hg update以避免从拉出所有子存储库开始 我应该指出 在创建这样的克隆后 保留
  • Android ListView项目集错误

    我有一个列表视图 其中有 5 个项目 如果我尝试在第 4 个和第 5 个项目上设置错误 那么它会抛出空指针异常 例外 08 22 13 34 49 523 E AndroidRuntime 16952 FATAL EXCEPTION mai
  • 是否有更合适的方法来设置闭包编译器的 language_in 选项(播放 2.1)?

    我必须将闭包编译器中的 language in 选项配置为 ECMASCRIPT5 来编译 Ember Angular 和其他需要 ES5 的库 一定有更好的方法 但我是这样实现的 Build scala val root new java
  • Symfony 4 自定义事件调度程序不工作

    我按照 Symfony 4 3 文档创建了一个自定义事件 分派它并监听它 跟踪我的控制器的执行情况 看起来事件调度程序没有找到任何订阅者 并且我无法弄清楚我做错了什么 我的事件类非常基础 namespace App Event use Sy
  • NodeJS解码URI组件无法正常工作

    当我尝试使用decodeURLCompnent在nodeJS中解码下面的字符串时 var decoded decodeURI Ulysses 20Guimar C3 A3es 20 20lado 20par console log deco
  • DataGridView 绑定问题:“索引 -1 没有值。”

    我有一个绑定到绑定源的 datagridview 和表单上的几个按钮 一个按钮将项目添加到绑定源 另一个按钮删除当前选定的项目 还有一个事件处理程序 用于侦听 CurrentChanged 事件并更新 删除 按钮的 启用 状态 一切都很顺利
  • AWSElasticBeanstalkFullAccess(提供完全访问...)等效项?

    我正在学习有关 AWS Beanstalk 的课程 该课程可能已经过时 在 IAM 管理控制台中添加了一个用户 并且直接附加的现有策略之一是AWSElasticBeanstalkFullAccess 我自己在过滤策略时找不到它 这是改名了吗
  • 使用协议“YourProtocol”作为类型必须写为“any YourProtocol”错误

    我在实施协议时遇到错误 我已在名为 的文件中声明了如下协议 TransactionListViewViewModelItem swift 以下是我在此文件中的内容 protocol TransactionListViewViewModelI
  • 如何向 PHP/SQL 搜索脚本添加拼写建议

    使用 php sql 在我的网站上创建搜索功能 非常简单 只需使用 LIKE 子句在数据库上使用 SELECT ALL 查询并在页面上回显结果即可 我的问题是 如果用户输入错误的搜索查询 如何添加拼写建议 除非搜索词与数据库内容完全匹配 否
  • 如何在 MAT Eclipse 中使用 OQL 进行嵌入式查询

    我可以使用如下查询获取所有 Thread 对象 SELECT OBJECTS dominators s FROM java lang Thread s 那么如果我想对返回的结果对象进行进一步的分析 我认为OQL应该如下所示 SELECT f
  • Xamarin.Forms ListView 大小到内容

    我有一个相当大的表单 主要适用于平板电脑 它有一个 GridView 嵌套两个 stacklayouts 和 listview 我很少有一个 ListView 包含一些单行项目 并且我需要它来调整内容的大小 这是我的源代码
  • 单击电子邮件中的 Outlook safelink 保护链接似乎会执行代码两次

    这与编码本身并没有真正的关系 我的项目是在 Laravel 7 1 中 但更多的是在 Outlook 的安全测量中 基本上我有一个功能 可以发送一封包含按钮的电子邮件 它是一个带有令牌的链接 以及我的 Laravel 项目中用于执行某些操作
  • Discord.py SSLCertVerificationError

    我一直在开发一个机器人 昨晚它根据需要运行得很好 但今天早上当我在终端中打开机器人时 出现以下错误 Traceback most recent call last File d Documents Bots DS BOT bot py li
  • 我可以从 Windows 窗体应用程序运行编码 UI 测试吗?

    我可以从 Windows 窗体应用程序运行编码 UI 测试吗 正在寻找样本 Thanks 当然可以 您可以使用 mstest exe 命令行应用程序来运行编码的 UI 测试 您只需要编写简单的算法 确保在启动 mstest 时传递正确的参数
  • Symfony2 反向代理 - 基于 cookie 或其他设置分离相同 URL 的缓存

    我使用默认的 Symfony2 反向代理 并且需要根据 cookie 设置单独缓存同一 URL 该网站通过缩小图像和删除 JavaScript 来提供 基本 网站视图 由于内容相同 我使用了相同的 URL 但缓存当然是一个问题 我需要能够单