【问题标题】:MAMP Pro images not refreshing on Mountain LionMAMP Pro 图像在 Mountain Lion 上不刷新
【发布时间】:2012-07-26 10:38:23
【问题描述】:

我每天都使用 mamp Pro 在本地测试基于 php 的网站,尽管我是一个简单的设计师,编写 PhP 真的不是我的事。 自从我安装 OS X ML 以来,我一直遇到的问题是,当在浏览器中测试网站时,图像似乎会缓存一次,然后永远不会刷新,即使在替换相同的图像或在 PS 中编辑它之后也是如此。

我认为这是 MAMP 的图像缓存问题,因为它发生在所有浏览器中,除非我在刷新页面之前清除缓存。 HTML 和 CSS 更新完美。

不用说,这是一个大问题,因为这意味着我需要做一大堆测试工作,而不是简单的页面刷新。

有人遇到过这个问题或可以提供解决方案吗?

【问题讨论】:

    标签: php apache mamp


    【解决方案1】:

    MAMP 似乎默认启用 mod_expires(至少在我的 MAMP 2.1.0 安装中),因此您应该能够在 .htaccess 文件中添加一些适当的设置。

    默认立即过期:

     ExpiresActive On
     ExpiresDefault "now"
    

    或者更细化(修改过期时间以适应您的测试):

     ExpiresActive On
     ExpiresDefault "now"
     ExpiresByType image/gif "access plus 10 seconds"
     ExpiresByType image/jpeg "access plus 10 seconds"
     ExpiresByType image/png "access plus 10 seconds"
     ExpiresByType text/css "access plus 10 seconds"
     ExpiresByType text/javascript "access plus 2 minutes"
     ExpiresByType application/x-javascript "access plus 2 minutes"
     ExpiresByType application/x-shockwave-flash "access plus 10 minutes"
     ExpiresByType text/xml "access plus 5 seconds"
    

    如果出现无效指令错误,需要开启mod_expires

    • 在 MAMP PRO 中,这是在服务器 => Apache 选项卡上完成的。确保选中 expires_module 模块。

    • 在原版 MAMP 中,您可以编辑 /Applications/MAMP/conf/apache/httpd.conf。应该有类似以下的注释行:

      # LoadModule expires_module modules/mod_expires.so

      ...删除前导“#”以取消注释。

    启用 mod_expires 后,您需要使用 MAMP 管理界面来停止/启动服务器,并且 Expires 指令现在应该可用。

    【讨论】:

    • 您好,感谢您冗长而详细的回复。 mod_expires 当然是启用的(使用 mamp pro 和 mamp 目录中的 htdocs 文件夹)。我不确定如何在 mamp 中创建 .htaccess 文件,您能告诉我该怎么做吗?
    • @andy: dot files.htaccess 在 Finder 中默认隐藏,因此最简单的创建方法是使用 Terminal。启动一个新的终端会话,切换到您的 Web 文档的顶级目录并使用 nano .htaccess 创建/编辑。或者,您可以将 Expires* 指令添加到您的 httpd.conf 中(编辑 /Applications/MAMP/conf/apache/httpd.conf 并直接添加或添加为 Include directive)。
    • 所以我在 httpd.conf 文件的底部添加了 ExpiresActive On ExpiresDefault "now" 并且问题仍然存在(必须按住 cmd +R 并发送垃圾邮件才能显示更改)。对不起,我不知道如何使用终端,我对 .htaccess 了解不多,也许我做错了?
    • @andy:您是否尝试过先清除浏览器缓存(以防旧图像仍被缓存)?检查过期标头的一种方法正在设置:在 safari 中从本地网络服务器打开图像 url,右键单击并选择“检查元素”,然后刷新页面。在 Web 检查器的右侧面板中,您应该看到一个名为“响应标头”的组,其中应包含图像的 DateExpires 值。如果您不确定 .htaccess 文件是否正在被使用,请尝试输入一个明显的拼写错误(如果 Apache 尝试读取无效的 .htaccess 文件,它应该会抱怨)。
    • 这是我从本地主机 i.imgur.com/pHYBA.png 检查图像 url 看到的,这是我的 httpd.conf pastebin.com/LRLt3ReN 我认为有问题,因为我在图像上看不到响应标题。
    【解决方案2】:

    在我禁用缓存之前,我的页面不会刷新。也许它适用于您的图像。 如果您使用 php 版本 5.5.3,则在您的 MAMP 首选项中有一个缓存。 同样的事情发生在我身上,我在那里找到了解决方案:MAMP time between seeing live changes

    在您的 MAMP 目录中转到:/bin/php/php5.5.3/conf/php.ini
    并评论 Opcahe 行:

    [OPcache]
    ;zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
    ;  opcache.memory_consumption=128
    ;  opcache.interned_strings_buffer=8
    ;  opcache.max_accelerated_files=4000
    ;  opcache.revalidate_freq=60
    ;  opcache.fast_shutdown=1
    ;  opcache.enable_cli=1
    

    【讨论】:

    • 不,它不起作用
    猜你喜欢
    • 2012-10-23
    • 2013-03-20
    • 2012-07-25
    • 2013-03-16
    • 2014-01-31
    • 2012-10-11
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    相关资源
    最近更新 更多