周日快乐,
我为运行在Ubuntu 16上Azure上的Bitnami lamp打包实例上的缓存管理苦苦挣扎了3天(担心到月底会变得更大胆)。十、
我从事一个PHP5到PHP7迁移的大系统已经有几个星期了,即将完成任务。
我使用该系统的测试站点可在以下位置访问:https://stephanedeluca.com让你看看缓存。
不幸的是,我看到的是,我的PHP脚本没有立即反映我在部署(简单上传)到服务器后所做的更改。因此,用户体验有时会因为用户经常需要双重刷新而遭到破坏,在最坏的情况下,用户体验必须通过浏览器重新加载所有内容。
在以前的系统上,一切都很好,但是在这个新盒子上,我有问题。该框使用php-fpm。
到目前为止,我在缓存管理解决方案方面取得的成就:
>
<ifModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 0 seconds" </ifModule> <FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$"> <ifModule mod_expires.c> ExpiresDefault "access plus 1 years" </ifModule> <ifModule mod_headers.c> #Header append Cache-Control "public" </ifModule> </FilesMatch> <FilesMatch "\.(gif|jpg|jpeg|png)$"> <ifModule mod_expires.c> ExpiresDefault "access plus 1 weeks" </ifModule> <ifModule mod_headers.c> #Header append Cache-Control "public" </ifModule> </FilesMatch> <FilesMatch "\.(xml|json|txt|html|js|css)$"> <ifModule mod_expires.c> ExpiresDefault "access plus 2 hours" </ifModule> <ifModule mod_headers.c> #Header append Cache-Control "proxy-revalidate" </ifModule> </FilesMatch> <filesMatch "\.(php)$"> FileETag None <ifModule mod_headers.c> Header unset ETag #Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" Header set Pragma "no-cache" #Header set Expires "Tue, 15 Mar 1966 10:00:00 GMT+1" </ifModule> </filesMatch>
我的所有PHP脚本(通过prepend)都会生成以下标题(在调用会话_start()之后):
// === No caching ===
session_cache_limiter('private');
session_cache_expire(0);
// === Start session (must be after session_cache_X())
session_start();
header('Cache-Control: private, max-age=0, s-max-age=0, no-cache, no-store, must-revalidate', true);
header("Last-Modified: $headerNow", true);
在查看浏览器请求和响应时,我发现一切看起来都很好,imho:
请求(由Chrome报告)
Request URL: https://stephanedeluca.com/
Request Method: GET
Status Code: 200 OK (from ServiceWorker)
Referrer Policy: no-referrer-when-downgrade
回应:
Cache-Control: private, max-age=0, s-max-age=0, no-cache, no-store, must-revalidate
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=UTF-8
Date: Sun, 28 Apr 2019 12:36:57 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive: timeout=5, max=100
Last-Modified: Sun, 28 Apr 2019 12:36:57 GMT
Pragma: no-cache
Server: Apache
Transfer-Encoding: chunked
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
X-Generated-On: Sun, 28 Apr 2019 12:36:57 GMT
X-Powered-By: ZID/Webengine v24.0b27 -- Copyright (c) 1995-2019 MagicApps (http://MgcApps.com) -- All Rights Reserved
Provisional headers are shown
Referer: https://stephanedeluca.com/map.php
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
我还使用https://www.giftofspeed.com/cache-checker/报告也如预期的那样。
我的想法快用完了。
我是比特纳米工程师。为了禁用服务器中的缓存并允许每次提供文件,请禁用Apache的PageSpeed和PHP的OPCache(默认情况下启用)。
要禁用PageSpeed,请注释掉httpd中的以下行。conf(/opt/bitnami/apache2/conf/httpd.conf)
#Include conf/pagespeed.conf
#Include conf/pagespeed_libraries.conf
要禁用OPCache,请更改OPCache。在php中启用。ini文件并将其设置为0(/opt/bitnami/php/etc/php.ini)
然后重新启动所有服务
sudo /opt/bitnami/ctlscript.sh restart
我希望存储在redis缓存中的数据在给定的时间段后自动从缓存中清除,而无需对其调用delete方法。在这个POC中,我将TTL设置为60秒。我曾尝试在缓存管理器中使用API SetDefaultExpire、setExpires设置它,并在RedisTemplate中使用API expire设置它。到目前为止,没有一个解决方案对我有效。 在使用的redis存储库中, 请给我指出正确的方向。感谢您的
问题内容: 返回403。我可以使用firefox / chrome浏览网站,因此似乎是编码错误。 我不知道自己在犯什么错误。 谢谢。 问题答案: 如果通过对象发出请求,则此方法有效。 输出:
问题内容: 我正在尝试将IBM的CPLEX库与我的Java应用程序集成。现在,我只是试图创建一个IloCplex对象。我添加了Cplex.jar,它可以很好地编译,但是当我运行它时: Cplex在抛出异常之前打印此消息: 我通过这个参数给JVM: 。这是cplex124.dll的位置。我看过的每个教程都给出了相同的步骤,我觉得自己很好地遵循了它们。 我究竟做错了什么?? 问题答案: 我在互连网上发
我无法使用和,在上本地运行我的pod。我使用<code>gitbash</code>来执行所有这些命令。 不知道如何去调试它。 $docker图片 $ ku bectl run greet-foo-image = greet:latest-image-pull-policy = Never $kubectl获得豆荚
ldd找不到rpath定义中存在的dll。找到了其他一些库(check/./../lib/*) 这里是 ldd 的输出(我们可以看到在 ../lib,但不是自由 root@hyperstream:/DT/local/ADE-trunk4/build-ADE-Desktop-Default/bin#ldd./ade_adminlinux-vdso.so.1= root@hyperstream:/DT
问题内容: 我正在尝试将接口绑定到其实现,如从配置文件中读取的那样,以便可以将其提供给IoC容器。这大致是我想做的事情: 是否有可能获得? 问题答案: 您需要将类显式传递给构造函数(并自行存储)。