我试图清除缓存时,我的Symfony 2网站最近给了我一些问题.我在终端中输入以下命令:
php app/console cache:clear --env=dev
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
[ErrorException]
Warning: rename(/var/www/corpsite/corpsite/app/cache/dev,/var/www/corpsite/corpsite/app/cache/dev_old): Directory not empty in /var/www/corpsite/corpsite/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php line 74
Run Code Online (Sandbox Code Playgroud)
所以我将该文件的权限更改为777,并重新运行clear cache命令,这会给我这个错误:
[ErrorException]
Warning: unlink(/var/www/corpsite/corpsite/app/cache/dev_old/twig/6b/e9/4491e41b895786689b86f32f446f.php): Permission denied in /var/www/corpsite/corpsite/vendor/symfony/src/Symfony/Component/HttpKernel/Util/Filesystem.php line 100
Run Code Online (Sandbox Code Playgroud)
我可以通过删除'dev_old'文件夹解决问题,但我想解决导致问题的问题.
PS - 我知道该网站正在开发模式下运行.该网站已经存在了10个月,这从来就不是问题.
任何帮助表示赞赏!
如果http_referer来自谷歌(.com/.ru/.co.uk/english/etc.等),我想htaccess执行以下代码.这可能吗?
<filesMatch ".(jpg|jpeg|png|gif)$">
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 "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud) 即使我发送"缓存控制:必须重新验证",Google Chrome在浏览器中使用来回按钮时也会使用本地缓存页面.
这是原始回复的一部分:
HTTP/1.1 200 OK
cache-control: private, must-revalidate
etag: "c9239b5d4b98949f8469a05062e05bb999d7512e"
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
如果我刷新页面,我得到一个"HTTP/1.1 304 Not Modified"响应但是当我使用后退按钮时,我得到以下响应:
Request URL:example.com
Request Method:GET
Status Code:200 OK (from cache)
Run Code Online (Sandbox Code Playgroud)
我正在寻找的响应是304或200 OK,是否有可能实现这一目标?
我正在尝试使用RESTEasy框架将Cache-Control标头添加到JBoss 7中生成的响应中.但是,由于JBoss默认添加了no-cache标头,所有响应最终都会获得多个Cache-Control标头.
我找不到任何设置来删除它,并且添加拦截器也无法正常工作,因为稍后会添加no-cache标头.
有人能告诉我如何在JBoss 7中禁用默认的pragma和缓存控制头吗?
注意:我正在使用无状态EJB的resteasy.
@Path("/api")
@Local
public interface UCSRestServiceInterface
{
@GET
@Path("/token")
@Produces("application/json")
@Cache(maxAge = 3600, noTransform = true)
public Response getToken();
}
Run Code Online (Sandbox Code Playgroud)
获取响应标头为,
{
"pragma": "No-cache",
"date": "Thu, 11 Feb 2016 20:16:30 GMT",
"content-encoding": "gzip",
"server": "Apache-Coyote/1.1",
"x-frame-options": "SAMEORIGIN",
"vary": "Accept-Encoding,User-Agent",
"content-type": "application/json",
"cache-control": "no-cache, no-transform, max-age=3600",
"transfer-encoding": "chunked",
"connection": "Keep-Alive",
"keep-alive": "timeout=15, max=100",
"expires": "Wed, 31 Dec 1969 19:00:00 EST"
}
Run Code Online (Sandbox Code Playgroud) 我们已经配置了nginx服务器来将缓存控制头添加到公共和到期时间为1个月.但是当我们从浏览器发出请求时,客户端正在添加Cache-control:no-cache标头.因此,每次都是新鲜的内容,而不是提供缓存版本.
我怎样才能缓存静态文件?
如果我从终端触发请求,则服务器添加的缓存控制头在响应头中可见.
即使服务器上的模块已更改,以下代码也将始终记录相同的消息,无论发送的 Cache-Control 标头如何:
import('http://example.com/script.mjs').then(m => console.log(m.default))
Run Code Online (Sandbox Code Playgroud)
除非重新加载整个页面。是否有类似于delete require.cache[...]NodeJS 的编程方式来破坏动态导入缓存?
我知道你可以做到这一点
Vary: Accept-Encoding
Vary: Accept-Language
Run Code Online (Sandbox Code Playgroud)
但你能做到吗
Vary: Accept-Encoding, Accept-Language
Run Code Online (Sandbox Code Playgroud) 我在缓存我的应用程序时遇到问题.
当此代码添加到tomcat的web.xml时:
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOnly</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Run Code Online (Sandbox Code Playgroud)
我收到了这个回复:
Cache-Control private
Date Tue, 18 Feb 2014 01:18:17 GMT
Etag W/"200-1391558564593"
Expires Thu, 01 Jan 1970 00:00:00 WET
Server Apache-Coyote/1.1
Run Code Online (Sandbox Code Playgroud)
没有这个代码一切都很好:
Accept-Ranges bytes
Cache-Control max-age=604800
Content-Length 1496
Content-Type text/css
Date Tue, 18 Feb 2014 01:21:26 GMT
Etag W/"1496-1391558561359"
Expires Tue, 25 Feb 2014 01:21:27 GMT
Last-Modified Wed, 05 Feb 2014 00:02:41 GMT
Server Apache-Coyote/1.1
Run Code Online (Sandbox Code Playgroud)
谁能说出问题的原因?以及为什么这段代码将cache-controle更改为我的应用程序的私有.非常感谢
Tomcat 7.0
JDK : 1.6
Run Code Online (Sandbox Code Playgroud) 我有两个名为"promo_en"和"promo_de"的静态CMS块 - 翻译为现有的两个店铺视图"en"和"de".
我想使用模块的layout.xml文件将它们添加到某些模块的侧边栏中.
问题是,如果我使用以下语法添加它们 - 它们都显示忽略我当前所在的商店视图(我希望有一些自动过滤):
<block type="cms/block" name="Promo_de">
<action method="setBlockId"><block_id>promo_de</block_id></action>
</block>
<block type="cms/block" name="Promo_en">
<action method="setBlockId"><block_id>promo_en</block_id></action>
</block>
Run Code Online (Sandbox Code Playgroud)
如果我将它们重命名为"promo"并使用以下语法 - 它可以正常工作,直到我激活Magento的缓存 - 然后CMS块的输出冻结在任何存储视图首先缓存:
<block type="cms/block" name="Promo">
<action method="setBlockId"><block_id>promo</block_id></action>
</block>
Run Code Online (Sandbox Code Playgroud)
关于此事的想法或解决方法受到高度赞赏.
layout block cache-control magento content-management-system
我有一些内容永远不会改变的目录.
是否可以创建.htaccess文件,告诉浏览器该目录和子目录中的任何内容都可以缓存很长时间?
如果可能的话,我想在每个目录中复制相同的.htaccess文件.
如果这是可能的,你会建议max-age超过期限或两者兼而有之吗?
cache-control ×10
apache ×2
http ×2
javascript ×2
.htaccess ×1
block ×1
caching ×1
ecmascript-6 ×1
es6-modules ×1
etag ×1
http-headers ×1
jax-rs ×1
jboss ×1
jboss7.x ×1
layout ×1
magento ×1
mod-expires ×1
mod-headers ×1
resteasy ×1
symfony ×1
tomcat ×1