启用缓存会影响动态内容吗?
例如,在我的一个 PHP 站点上,缓存 header 设置为:
Cache-Control: public, max-age=21600
这也会影响动态内容吗?
如果是这样,那么缓存动态 PHP 站点的标准方法是什么?据推测,您会缓存静态内容(例如图像),但不会缓存动态内容(例如 html、文本等)。您将如何以及在哪里完成这项工作?
最佳答案
是的。答案是肯定的。这控制浏览器和一些 ISP 缓存。它将在您指定的时间内在许多位置缓存动态内容。不是全部。并非所有浏览器都会遵守规则,并非所有 ISP 都会遵守规则。众所周知,AOL 过去常常无视人们的缓存规则,在奇怪的时间缓存所有内容,导致早期网络上的页面损坏。
在未缓存的动态页面上,您可以使用此值将更改相对不频繁的页面设置为缓存 10 分钟到一个小时。对于图片、css、js文件之类的东西要长一些。缓存 8 小时可能太多了,因为它比 1 小时长得多,但只会将内容的总点击次数减少 7 次。
还有其他可能更可靠的方法来缓存内容。您可以查看查询缓存、文件缓存、memcached。所有这些选项也可用于缓存内容以外的内容。它们都会帮助您加快重复性操作。
许多数据库(MySQL 是事实上的标准)都提供查询缓存。这将缓存自上次运行查询以来尚未更新的表的查询结果。非常适合规范化查找表。非常适合只更新一次的表。适用于大约每小时更新一次甚至每 10 分钟更新一次的表。对于比这更频繁更改的表,它们将产生有限的节省时间的结果。
这些可用于缓存键/值对信息。它们可以是 page_url/page_content 或 page_list/array_of_pages_in_site 或您需要的任何其他键/值对。这就是现在大多数人将页面缓存 10-60 分钟的方式。它们是可靠的,在服务器上受控,并且可以在需要时立即刷新。它们不需要基于时间,如果您的逻辑编写正确,您可以将它们视为查询缓存。仅当信息更新时,您才从缓存中清除该键,然后页面立即更新,否则位于缓存中。
这让我们回到头缓存。即使其他缓存就位,在这里缓存大约 10 分钟仍然是明智的。其他缓存仍然需要服务器的请求,这会减慢它的速度。虽然这不会大大减轻压力,但会减轻压力。而且安装起来并不费力。
关于php - 启用缓存会影响动态内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12583327/
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
尝试在我的RoR应用程序中实现计数器缓存列时出现错误Unknownkey(s):counter_cache。我在这个问题中实现了模型关联:Modelassociationquestion这是我的迁移:classAddVideoVotesCountToVideos0Video.reset_column_informationVideo.find(:all).eachdo|p|p.update_attributes:videos_votes_count,p.video_votes.lengthendenddefself.downremove_column:videos,:video_vot
在启用Rack::Deflater来gzip我的响应主体时偶然发现了一些奇怪的东西。也许我遗漏了一些东西,但启用此功能后,响应被压缩,但是资源的ETag在每个请求上都会发生变化。这会强制应用程序每次都响应,而不是发送304。这在没有启用Rack::Deflater的情况下有效,我已经验证页面源没有改变。我正在运行一个使用thin作为Web服务器的Rails应用程序。Gemfile.lockhttps://gist.github.com/2510816有没有什么方法可以让我从Rack中间件获得更多的输出,这样我就可以看到发生了什么?提前致谢。 最佳答案
我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption
我正在尝试提取方括号内的内容。到目前为止,我一直在使用它,它有效,但我想知道我是否可以直接在正则表达式中使用某些东西,而不是使用这个删除功能。a="Thisissuchagreatday[coolawesome]"a[/\[.*?\]/].delete('[]')#=>"coolawesome" 最佳答案 差不多。a="Thisissuchagreatday[coolawesome]"a[/\[(.*?)\]/,1]#=>"coolawesome"a[/(?"coolawesome"第一个依赖于提取组而不是完全匹配;第二个利用前瞻和
使用Ruby1.8.6/Rails2.3.2我注意到在我的任何ActiveRecord模型类上调用的任何方法都返回nil而不是NoMethodError。除了烦人之外,这还破坏了动态查找器(find_by_name、find_by_id等),因为即使存在记录,它们也总是返回nil。不从ActiveRecord::Base派生的标准类不受影响。有没有办法追踪在ActiveRecord::Base之前拦截method_missing的是什么?更新:切换到1.8.7后,我发现(感谢@MichaelKohl)will_paginate插件首先处理method_missing。但是will_pa
我试图像这样在我的测试用例中执行获取:request.env['CONTENT_TYPE']='application/json'get:index,:application_name=>"Heka"虽然,它失败了:ActionView::MissingTemplate:Missingtemplatealarm_events/indexwith{:handlers=>[:builder,:haml,:erb,:rjs,:rhtml,:rxml],:locale=>[:en,:en],:formats=>[:html]尽管在我的Controller中我有:respond_to:html,