首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

rails在本地工作,但服务器状态304在heroku上

Rails是一种基于Ruby语言的开发框架,用于构建Web应用程序。它提供了一套丰富的工具和库,简化了开发过程,并遵循了MVC(模型-视图-控制器)架构模式。

在本地工作时,Rails应用程序可以正常运行,但在部署到Heroku上后,服务器状态返回304。状态码304表示资源未修改,客户端可以使用缓存的版本。这意味着在Heroku上部署的Rails应用程序返回的是缓存的响应,而不是实时生成的响应。

造成这种情况的可能原因有以下几个方面:

  1. 缓存设置:Heroku默认启用了HTTP缓存,以提高性能和减少服务器负载。可以通过在Rails应用程序中配置缓存策略来控制缓存行为。
  2. 静态资源:Heroku会自动对静态资源进行缓存,并使用CDN(内容分发网络)来提供这些资源。如果静态资源没有发生变化,Heroku将返回304状态码。
  3. HTTP头设置:在Heroku上部署时,可能需要检查HTTP头设置是否正确。特别是与缓存相关的头信息,如Cache-Control、ETag等。

为了解决这个问题,可以尝试以下方法:

  1. 禁用缓存:在Rails应用程序中,可以通过配置文件或代码来禁用缓存。例如,在config/environments/production.rb文件中添加以下代码:
  2. 禁用缓存:在Rails应用程序中,可以通过配置文件或代码来禁用缓存。例如,在config/environments/production.rb文件中添加以下代码:
  3. 这将禁用Heroku上的HTTP缓存。
  4. 强制重新加载静态资源:如果静态资源发生了变化,但Heroku仍然返回304状态码,可以尝试强制重新加载静态资源。可以通过更改资源的URL或添加版本号等方式来实现。
  5. 检查HTTP头设置:确保在Heroku上部署时,HTTP头设置正确。可以使用浏览器的开发者工具或HTTP请求工具来检查响应头信息。

总结起来,当Rails应用程序在本地工作正常但在Heroku上返回304状态码时,可能是由于缓存设置、静态资源或HTTP头设置等原因导致的。通过禁用缓存、强制重新加载静态资源和检查HTTP头设置,可以解决这个问题。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ai
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  • 移动推送服务(信鸽):https://cloud.tencent.com/product/tpns
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Ubuntu 18.04安装Chef服务器工作

Chef由一个Chef服务器、一个或者多个待配置的工作服务器、以及由安装在每个节点的Chef客户端管理的众多节点所组成。...尽管本地的主机可以运行任意的的操作系统,将远程服务器作为工作站主机的话,有些好处还是显而易见的,因为这样您就可以从任何地方访问它了。.../chef-repo/.chef/ 如果使用RSA密钥对身份验证的登录方式,则需要从本地终端使用scp命令将以.pem为后缀名的文件从服务器复制到工作站。.../cookbooks"] 更改下面的对应值 将node_name改为您在chef服务器创建的用户名。...出于安全考虑,您还希望删除节点客户机引导节点时上传到Chef服务器的验证文件validation.pem。虽然这些步骤都可以手动完成,将其设置为“菜谱”之后,执行起来更加容易和高效。

2.1K30

关于“Python”的核心知识点整理大全63

我们没有跟踪对本地数 据库的修改,因为这是一个糟糕的做法:如果你服务器使用的是SQLite,当你将项目推送到服务器时,可能会不小心用本地测试数据库覆盖在线数据库。...4处,我们执行了命令git status,输出表明当前位于分支master中,而工作目录是干净 (clean)的。每当你要将项目推送到Heroku时,都希望看到这样的状态。...编写本书 时,Heroku允许免费部署24小时内最多可以有18小时处于活动状态。项目的活动时间超过这个 限制后,将显示标准的服务器错误页面,稍后我们将设置这个错误页面。...然而,你看不到 你本地部署中输入的任何数据,因为它们没有复制到在线服务器。一种通常的做法是不将本地 数据复制到在线部署中,因为本地数据通常是测试数据。...Heroku创建超级用户 我们知道可使用命令heroku run来执行一次性命令,但也可这样执行命令:连接到了Heroku 服务器的情况下,使用命令heroku run bash来打开Bash

9610

Ansible和Docker的作用和用法

当然,你也会收获一些实践知识,那就是如何通过部署 Ansible 和 Docker 来为 Rails 应用搭建一个完整的服务器环境。 也许有人会问:你怎么不去用 Heroku?...最后,我骨子里是一个工匠,我非常了解如何把零件拼凑在一起工作Heroku 的基础模块是 Linux Container,而 Docker 表现出来的多功能性也是基于这种技术。...这种更简单的操作模式让我把精力集中如何将我的技术设施私有化,提高了我的工作效率。与 Unix 的模式一样,Ansible 提供大量功能简单的模块,我们可以组合这些模块,达到不同的工作要求。...Docker 容器内运行 Rails 应用 没有本地 Docker 镜像,从零开始部署一个中级规模的 Rails 应用大概需要100个 gems,进行100次整体测试,使用2个核心实例和2GB内存的情况下...文章的最后,我只希望你能感受到我的兴奋! 我2014年1月伦敦 Docker 会议讲过这个主题,已经分享到 Speakerdeck了。

2.1K20

主流 PaaS 平台架构:谷歌GAE、AEB、Cloud Foundry、Heroku

AppEngine Memcache 架构中是一个内存共享实例,充当缓存使用,我们可以将身份验证、会话信息等存放在这里来提升 Web 服务器性能。...亚马逊云边界的最外端有一个功能强大的DNS 服务器,它会接收用户的域名查询工作,并将后端配置负载均衡的正常的服务 IP 返回给用户,在这里它提供了安全可靠的路由功能。...Heroku 的路由模块被称为 Hermes,采用 Erlang 语言编写,其能够动态感知一个应用中包含多少个 dyno,基于一定的策略进行任务分发,另外我们还可以设置超时保护机制,Hermes 就拒绝掉外部请求...Heroku 打破了日志输出的传统观点,我们一般认为日志是非常重要、不可缺失的,日志以文件的形式存放在本地磁盘中,并且有开头、结尾,重视日志文件中每一行内容时间排序的关联性。...Heroku 就为这些后端服务的访问定义了一套 add-ons API,从而实现了代码与某个固定服务的解耦。 Heroku 最流行的后端服务是 PostgreSQL 数据库。

6.3K20

关于“Python”的核心知识点整理大全64

下面来修改settings.py,以让我们能够本地看到错误消息,部署到服务器后不显示任何 错误消息: settings.py --snip-- # Heroku设置 if os.getcwd...2处显示的状态表明我们仓库的分支master上工作,当前没有任何未提交的修改。推送到Heroku之前,必须检查状态并看到刚才所说的消息。...本地查看错误页面 将项目推送到Heroku之前,如果你要在本地查看错误页面是什么样的,首先需要在本地设 置中设置Debug=False,以禁止显示默认的Django调试页面。...如果你本地迁移了数据库,也需要迁移在线数据库。...如果代码不能正确地工作,请重 新审视所做的工作,尝试找出其中的错误。如果找不出错误,或者不知道如何撤销错误,请参阅 附录C中有关如何寻求帮助的建议。

8510

web 深入视角:变态的静态资源缓存与更新

上图是一个“可爱”的index.html页面和它的样式文件a.css,用文本编辑器写代码,无需编译,本地预览,确认OK,丢到服务器,等待用户访问。...看看那个a.css的请求吧,如果每次用户访问页面都要加载,是不是很影响性能,很浪费带宽啊,我们希望最好这样: 利用304,让浏览器使用本地缓存。,这样也就够了吗?不成!...304叫协商缓存,这玩意还是要和服务器通信一次,我们的优化级别是变态级,所以必须彻底灭掉这个请求,变成这样: 强制浏览器使用本地缓存(cache-control/expires),不要和服务器通信。...先部署资源,再部署页面:部署时间间隔之内,有旧版本资源本地缓存的用户访问网站,由于请求的页面是旧版本的,资源引用没有改变,浏览器将直接使用本地缓存,这种情况下页面展现正常;没有本地缓存或者缓存过期的用户访问网站...所以,大公司的静态资源优化方案,基本要实现这么几个东西: 配置超长时间的本地缓存 —— 节省带宽,提高性能 采用内容摘要作为缓存更新依据 —— 精确的缓存控制 静态资源CDN部署 —— 优化网络请求

1.3K00

放弃“免费套餐”,Heroku的遗产又少了一个

部署一个通用的栈非常困难,那时候,Rails 需要安装一个负载均衡器,为每个服务器提供反向代理,CGI 进程,并且可以随时监控和执行所有必要的操作。...容器:很少有人记得它, Heroku 容器还不流行的时候就已经开始运行了,使用 LXC 作为其 Cedar 栈的核心技术。...Cedar 让 Heroku 成为可以运行一切的平台——用户可以通过 Buildpack 和 Procfile 带来自己的栈,它复杂的内部状态机和路由层使得运行在其的应用变得非常强大。...甚至 Heroku 的“内核”中,你也可以进行交换,因此你仍然可以使用 Heroku 来构建、编排和监控你的应用,但是它们会在你自己的专用单租户服务器运行。...我们现在所见,容器技术已经成为许多部署栈的基石,更多的是作为一种原始技术,其中有许多技术可以提高其工作效率。

4.3K40

关于“Python”的核心知识点整理大全62

有鉴于此,我们可以信心满满,深信项目部署到Heroku后,行为将与它在 本地系统的完全相同。当你自己的系统开发并维护各种项目时,这将是一个巨大的优点。...2处,我们导入了dj_database_url,用于Heroku配置服务器。...20.2.10 本地使用 gunicorn 服务器 如果你使用的是Linux或OS X,可在部署到Heroku前尝试本地使用gunicorn服务器。...处的输出表明,gunicorn端口5000侦听请求。另外, gunicorn还启动了一个工作进程(12878),用于帮助处理请求(见3)。...注意 gunicorn不能在Windows系统运行,因此如果你使用的是Windows系统,请跳过这一步。 这不会影响你将项目部署到Heroku。.

14610

开发事半功倍,25款最好用的自动化软件部署工具|附下载地址

Chef可以管理跨服务器的基础设施,服务器基础结构被视为软件代码,而Chef能进行部署更新、管理测试管理版本等工作,通过将基础设施转变为灵活可读可版本可测试的代码,使用Chef能够管理任意数量的服务器。...主要特点: 无需安装或维护开发人员使用UI或YAML构建Configs快速建立专用硬件和SSD驱动器多分支的构建工作人员和社区支持现收现付价格 地址:https://www.appveyor.com...主要特点: 完全自定义的构建环境可定制的自定义仪表板与AWS、Heroku、谷歌云以及其他的集成使用SSH或本地构建进行调试 地址:https://circleci.com/ 11 Travis CI...Jenkins一个开源的自动化服务器提供持续交付和持续交付工具。插件结构支持构建、部署和自动化软件项目。Jenkins可以轻松地跨多个机器分布工作,帮助驱动构建、测试和跨多个平台的部署更快。...部署可以自动或手动触发,部署过程中,可以使用预定义的或完全自定义的Docker容器服务器执行或编译代码。

9.3K110

Heroku上部署Node.js

今天,我们将演示如何在Heroku上部署Node.js应用。Heroku官方提供免费帐户使用,在此之上,我们最多可以托管5个应用程序。如果你有大量需求的话,就需要购买特殊账户。...你需要安装Heroku ToolBelt才能使Heroku在你的系统正常工作,同时你还需要在你的系统安装GIT,因为Heroku和git要在一起协同工作。...只需输入命令heroku login,然后按照要求输入用户名和密码就可以了: 第5步 第5步 Heroku创建一个应用。...如果您希望Heroku来为您决定应用的名称,请使用以下命令:heroku create。 第6步 现在我们剩下的最后一步就是将本地仓库的所有文件推送到服务器。...我们通过使用命令:git push heroku master来实现。该命令将把所有本地版本库的分支推送到远程服务器对应的分支。

3.6K80

聊聊规模化容器

克里斯·罗格斯:我们 AWS 和 Azure 中使用 Kubernetes,运行 Ruby on Rails、Java、Go 和 Python 中的 dockerized 应用程序。...布莱恩·希克森:我们使用 Heroku,它采用了称为 dynos 的轻量级容器,用于我们的网络服务器、后台作业以及机器学习微服务的一个子集。其他机器学习微服务使用 Kubeflow。...最后,性能监控方面,我们使用了 Scout 和 Calibre。  Q:贵组织何时开始使用容器,以及它们如何改变开发工作流程?...与本地调试相比,在生产环境中进行调试更困难,尤其是托管容器的服务器,它有一个细粒度的访问控制列表。...一般情况下,任何问题都存在于比容器级别更高的抽象层次;例如,我们部署应用程序时发现了一些错误,这些错误并不特定于容器的使用。

88820

慢的不是 Ruby,而是你的数据库

Ruby 很慢,实际对我们来说并不重要。Ruby 应用程序很慢,实际它是堆栈,而不仅仅是语言。 我想更深入地研究最后一个问题,但在此之前,我们先解决前两个问题。...然而,现代软件的典型用例中,内存使用并不明显:客户与服务器软件交互时会感到缓慢,并不会直接体验到内存的使用。然而,不深入探讨这个问题的主要原因是对内存进行基准测试相当复杂。...然而,Rails 的魔力使其从此开始使用这一特性。每次页面加载都会导致大约 2 秒钟的数据库查询,占用数据库服务器的所有 CPU 和 IO。 当然,这是个愚蠢的错误。...这些项目之所以继续运行,唯一的原因是 Heroku 服务器的巨大成本(1200 美元 / 月),能为数百访问者提供服务一天。这样的错误不会导致数据库集群崩溃,而是逐渐累积成昂贵且性能糟糕的应用程序。...我遇到的一些问题是:“我已经知道 Rails,但不知道 Sinatra”,或者“管理要求我们类似的代码库运行一切”。实际,最后一个理由不成立。

11930

JVM并不是那么重量级

当我Heroku上部署了一个小的生产应用时,我第一次克服了对JVM的“恐惧”。这款应用每天只需要完成一项任务。...iSign本身就是一个经典的Rails应用,它托管3个AMI。...快进到2016年 我2016年11月尝试从头开始构建Rails应用。这是我几个月来第一次我的机器尝试Ruby编程。...不需要将应用程序部署到大型应用程序服务器中,你可以很容易地JAR文件中打包一个性能良好的HTTP服务器。Node的人会这样做,Ruby的人会这么做,但不知何故,JAR文件无法独立于自己的工作?...与JVM的日常工作我的的2012 MacBook Pro运行了至少5个JVM进程,内存为8GB。我从来没有尝试过同时启动5个Rails应用程序。 为什么同时开启5个?

1.6K50

让小型企业提高 20 倍效率的统一技术栈

所有函数都遵循了完全相同的超级简单的代码风格,无论是 Web 、移动设备,还是服务器。我们很少抽象,并且在所有服务器和 App 中都使用相同的简单查询语法。...这是我们自动化测试基础做的工作。 我们合并代码库时存在许多异花授粉(cross-pollination)的情况。我们将移动端代码合并到 Web 代码中,以实现业务逻辑共享。...其他可选方案 一个完美的世界里,我们应该使用单个代码库,由一个庞大的单体服务器端完成所有渲染,并使用一个单人框架(one-person framework),鉴于现代客户对 iOS、Android...Swift iOS、Kotlin Android、Django/Rails for Web & 服务器—— 注:3 种语言,全是原生的,这会失去本文介绍的大多数好处。...Rails for Web、iOS、Android & 服务器(Hey.com 的风格),移动应用导航本地渲染。注:1 种语言,新方法,或许已经过实战检验?

1.5K20

前端学习路线指南

——(现阶段还不足以称Web Developer) 有能力搭建一个专业的简单网站 有能力搭建网页应用的界面 能够把一张PSD 转化为基于HTML/CSS的静态网页 有公司上班的实力, 或者选择成为一名自由职业者...服务器端语言: PHP, Ruby.......PHP(不是最好的语言,但是是最可靠的服务器端语言) Node.js(一款新型, 强大的后台语言) Ruby on Rails (最好的框架,已经到了瓶颈期) Python(简单易学,相对于主流语言并不流行.../ VPS 应用云平台: Heroku, Digital Ocean, AWS 部署工具 Linux命令行 维护和升级 第十二步:恭喜你,你现在成为一名网页开发者了!...能够创造出网页引用 能构建后端APIs 能连接服务器 能够管理数据库 你的选择: 得到一份很好的工作 / 成为自由职业者 / 开始一项事业 第十三步:编程框架 JavaScript框架: React

1.8K20

服务端返回 304 如何做到的?

大家都知道 HTTP 状态304 代表内容没有变,客户端可以直接用缓存,进而节省带宽和提高效率。 具体流程是怎么样的呢?服务端和客户端(例如:浏览器)是怎么交互的呢?...如果你第二次 (或第三次,或第四次) 请求相同的数据,你可以告诉服务器一次获得的最后修改日期:在你的请求中发送一个 If-Modified-Since 头信息,它包含了一次从服务器获得数据所获得的时间...当服务器发送状态编码 304 时,不再重新发送数据,节省了带宽,客户端仅仅获得了这个状态代码。此时,客户端不需要又一次地下载相同的数据(服务器假定你有本地的缓存数据)。...服务器简单地返回 304: Not Modified,因此浏览器就会知道从本地缓存加载页面。...其工作方式是:服务器回传你所请求的数据的同时,发送这些数据的 hash ( ETag 头信息中给出),hash 的确定完全取决于服务器(比如简单点md5值)。

1.3K30

GitHub 前 CTO:全面微服务是最大的架构错误!网友:这不是刚改完 GitHub 吗

对于为什么不太看好微服务,Warner 给出的理由如下: 一般来说,整个工程团队一个大型应用程序中工作(想像 Rails 应用程序中的整个站点),比推理微服务将以何种方式失败要容易得多。...微服务潮流曾被 Heroku 大力推动,或许 Heroku 任职的经历也让 Warner 支持 GitHub 进行微服务改造。“我实际可以坐在那里倾听并真正为整体架构方法做出贡献。”...如何迁移 一直以来, GitHub 是基于 Ruby on Rails 的单体架构,直到 2021 年,为了让超过一半的开发人员单体代码库之外富有成效地开展工作,GitHub 以赋能为出发点开始了向微服务架构的迁移...最终,创建数据库模式功能组帮助团队将数据拆分到微服务架构所需的不同服务器和集群。GitHub 单体中实现了一个查询监视器来帮助检测,并在发现跨域查询时发出告警信息。...这几年,无数的中小团队微服务陷入了挣扎,很多公司放弃微服务,其中包括一些大型企业。 2020 年,Uber 放弃了微服务,转而使用宏服务。

1K20

推介7个CI CD(持续集成和持续部署)工具

有问题的构建和测试的成功或失败状态通过Slack,HipChat,IRC或许多其他集成发送,因此团队可以保持更新。...该工具最初是为Rails开发人员提供持续集成平台而构建的; GitHub上托管他们的代码并部署到Heroku。由于其受欢迎程度和需求,该公司多年来不断扩展以支持其他技术。 它有什么作用?...与Java监控中的代理类似,Bamboo也提供两种类型; 作为其进程的一部分,本地代理作为Bamboo服务器的一部分运行,而远程代理在其他服务器和计算机上运行。...这样,开发人员就可以同步他们的工作流程并始终保持正常运行并知道下一个版本以及修复的内容(应该)。 价格:竹子定价是根据代理商的数量。无限制本地代理的基本定价为10美元,最多10个工作,没有远程代理。...下一层是800美元,用于无限制的工作本地代理,以及1个远程代理。其他远程代理商的价格将高达44,000美元。

18.4K32
领券