草庐IT

php - 利用浏览器缓存在 PHP 项目的 htaccess 中不起作用

coder 2024-03-01 原文

我在我的 php 项目的 .htaccess 文件中添加了以下代码。

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

但谷歌分析器仍然没有将其标记为已解决。它显示(未指定过期)每个图像、css 和 js。 我是否需要做其他事情才能让它发挥作用?

最佳答案

你的配置看起来不错。

mod_expires 在您的 apache 配置中启用了吗?

你能提供结果吗:

curl -I http://yourdomain/an_asset.jpg

编辑: 我添加了一个非详尽列表

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "now"
    ExpiresByType application/atom+xml "access plus 5 minutes"
    ExpiresByType application/json "access plus 5 minutes"
    ExpiresByType application/javascript "access plus 30 days"
    ExpiresByType application/mac-binhex40 "access plus 1 day"
    ExpiresByType application/msword "access plus 1 day"
    ExpiresByType application/octet-stream "access plus 30 days"
    ExpiresByType application/pdf "access plus 1 day"
    ExpiresByType application/x-cdf "access plus 1 day"
    ExpiresByType application/x-director "access plus 1 day"
    ExpiresByType application/x-font-ttf "access plus 1 day"
    ExpiresByType application/x-font-opentype "access plus 1 day"
    ExpiresByType application/x-font-woff "access plus 1 day"
    ExpiresByType application/x-javascript "access plus 30 days"
    ExpiresByType application/x-netcdf "access plus 1 day"
    ExpiresByType application/x-shockwave-flash "access plus 1 day"
    ExpiresByType application/xhtml+xml "access plus 5 minutes"
    ExpiresByType application/xml "access plus 5 minutes"
    ExpiresByType application/font-woff "access plus 1 day"
    ExpiresByType application/zip "access plus 1 day"
    ExpiresByType application/vnd.ms-fontobject "access plus 30 days"
    ExpiresByType audio/basic "access plus 1 day"
    ExpiresByType audio/mpeg "access plus 1 day"
    ExpiresByType audio/x-aiff "access plus 1 day"
    ExpiresByType audio/x-wav "access plus 1 day"
    ExpiresByType image/bmp "access plus 1 day"
    ExpiresByType image/gif "access plus 1 day"
    ExpiresByType image/jpeg "access plus 1 day"
    ExpiresByType image/png "access plus 1 day"
    ExpiresByType image/svg+xml "access plus 30 days"
    ExpiresByType image/vnd.microsoft.icon "access plus 7 days"
    ExpiresByType image/x-icon "access plus 1 day"
    ExpiresByType text/css "access plus 30 days"
    ExpiresByType text/html "access plus 5 minutes"
    ExpiresByType text/javascript "access plus 30 days"
    ExpiresByType text/plain "access plus 1 day"
    ExpiresByType text/xml "access plus 5 minutes"
    ExpiresByType video/quicktime "access plus 1 day"
    ExpiresByType video/mp4 "access plus 365 days"
    ExpiresByType video/webm "access plus 365 days"
    ExpiresByType video/ogg "access plus 365 days"
    ExpiresByType video/x-msvideo "access plus 1 day"
</IfModule>

关于php - 利用浏览器缓存在 PHP 项目的 htaccess 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33144307/

有关php - 利用浏览器缓存在 PHP 项目的 htaccess 中不起作用的更多相关文章

  1. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  2. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  3. ruby - 在 Ruby 中用键盘诅咒数组浏览 - 2

    我正在尝试在Ruby中制作一个cli应用程序,它接受一个给定的数组,然后将其显示为一个列表,我可以使用箭头键浏览它。我觉得我已经在Ruby中看到一个库已经这样做了,但我记不起它的名字了。我正在尝试对soundcloud2000中的代码进行逆向工程做类似的事情,但他的代码与SoundcloudAPI的使用紧密耦合。我知道cursesgem,我正在考虑更抽象的东西。广告有没有人见过可以做到这一点的库或一些概念证明的Ruby代码可以做到这一点? 最佳答案 我不知道这是否是您正在寻找的,但也许您可以使用我的想法。由于我没有关于您要完成的工作

  4. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  5. ruby-on-rails - "assigns"在 Ruby on Rails 中有什么作用? - 2

    我目前正在尝试学习RubyonRails和测试框架RSpec。assigns在此RSpec测试中做什么?describe"GETindex"doit"assignsallmymodelas@mymodel"domymodel=Factory(:mymodel)get:indexassigns(:mymodels).shouldeq([mymodel])endend 最佳答案 assigns只是检查您在Controller中设置的实例变量的值。这里检查@mymodels。 关于ruby-o

  6. ruby - 字符串文字前面的 * 在 ruby​​ 中有什么作用? - 2

    这段代码似乎创建了一个范围从a到z的数组,但我不明白*的作用。有人可以解释一下吗?[*"a".."z"] 最佳答案 它叫做splatoperator.SplattinganLvalueAmaximumofonelvaluemaybesplattedinwhichcaseitisassignedanArrayconsistingoftheremainingrvaluesthatlackcorrespondinglvalues.Iftherightmostlvalueissplattedthenitconsumesallrvaluesw

  7. ruby - 强制浏览器下载文件而不是打开文件 - 2

    我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.

  8. ruby - 为什么这个 eval 在 Ruby 中不起作用 - 2

    你能解释一下吗?我想评估来自两个不同来源的值和计算。一个消息来源为我提供了以下信息(以编程方式):'a=2'第二个来源给了我这个表达式来评估:'a+3'这个有效:a=2eval'a+3'这也有效:eval'a=2;a+3'但我真正需要的是这个,但它不起作用:eval'a=2'eval'a+3'我想了解其中的区别,以及如何使最后一个选项起作用。感谢您的帮助。 最佳答案 您可以创建一个Binding,并将相同的绑定(bind)与每个eval相关联调用:1.9.3p194:008>b=binding=>#1.9.3p194:009>eva

  9. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  10. ruby - 如何在 watir 测试套件结束时关闭浏览器? - 2

    使用ruby​​的watir测试网络应用程序时,浏览器最后会保持打开状态。网上的一些建议是,要进行真正的单元测试,您应该在每次测试时(在拆卸调用中)打开和关闭浏览器,但这很慢而且毫无意义。或者他们做这样的事情:defself.suites=superdefs.afterClass#Closebrowserenddefs.run(*args)superafterClassendsend但这会导致摘要输出不再显示(诸如“100次测试、100次断言、0次失败、0次错误”之类的内容仍应显示)。我怎样才能让ruby​​或watir在我的测试结束时关闭浏览器? 最佳答案

随机推荐