标签: caching

IIS7缓存控制

我正在尝试做一些我认为相当简单的事情.获取IIS 7告诉客户他们可以在我的网站上缓存所有图像一段时间,比方说24小时.

我已尝试过http://www.galcho.com/Blog/post/2008/02/27/IIS7-How-to-set-cache-control-for-static-content.aspx上的步骤,但无济于事.我仍然得到返回304s的服务器请求.

有没有人有办法做到这一点?我有一个图形密集型网站,每次他们请求页面时我的用户都被锤击(我的服务器也是如此).很奇怪,这些图像似乎在Firebug中出现了"Cache-Control private,max-age = 3600",但是当我按下F5时,浏览器仍在请求它们.

asp.net iis iis-7 caching

90
推荐指数
5
解决办法
10万
查看次数

"Vary:Accept"HTTP标头的功能是什么?

我使用PHP生成动态Web页面.如下面的教程所述(参见下面的链接),当$ _SERVER ['HTTP_ACCEPT']允许时,XHTML文档的MIME类型应为"application/xhtml + xml".由于您可以使用2个不同的MIME("application/xhtml + xml"和"text/html")提供相同的页面,因此您应该将"Vary"HTTP标头设置为"Accept".这将有助于代理上的缓存.

链接:http: //keystonewebsites.com/articles/mime_type.php

现在我不确定:header('Vary:Accept')的含义; 我不太确定'Vary:Accept'会做什么......

我找到的唯一解释是:

在Content-Type标头之后,发送Vary标头(如果我理解正确的话)告诉中间缓存,如代理服务器,文档的内容类型根据请求文档的客户端的功能而变化. http://www.456bereastreet.com/archive/200408/content_negotiation/

任何人都可以给我一个这个标题的"真实"解释(带有该值).我想我理解的事情如下:Vary:Accept-Encoding代理上的缓存可以基于所服务页面的编码,但我不明白:变化:接受

proxy caching http

90
推荐指数
2
解决办法
7万
查看次数

Gmail的新图片缓存正在破坏简报中的图片链接

我有一些自动电子邮件,在我的网站注册完成后发送.

直到最近,他们工作得很好.现在Google的新系统正在重写图像并将其存储在缓存中(据称)

但是,谷歌对我的图像链接的新重写完全破坏了它们,给出了500错误和链接图像损坏.

让我们说我的正常图片网址是:

http://www.mysite.com/images/pic1.jpg
Run Code Online (Sandbox Code Playgroud)

谷歌正在将此重写为:

https://ci5.googleusercontent.com/proxy/vI79kajdUGm6Wk-fjyicDLjZbCB1w9NfkoZ-zQFOB2OpJ1ILmSvfvHmE56r72us5mIuIXCFiO3V8rgkZOjfhghTH0R07BbcQy5g=s0-d-e1-ft#http://www.mysite.com/images/pic1.jpg
Run Code Online (Sandbox Code Playgroud)

但是,该URL没有任何内容.

电子邮件显示图像错误

因此,要么Google创建的链接出现问题,要么图像没有上传到googleusercontent服务器,但我不知道如何解决问题.

我在Amazon EC2上使用PHP,phpmailer库和Ubuntu服务器,但我不确定是否与此问题有关.

gmail rewrite caching image

89
推荐指数
4
解决办法
8万
查看次数

if-modified-since vs if-none-match

if-modified-since和if-none-match之间可能有什么区别?我有一种感觉,if-none-match用于文件,而if-modified-since用于页面?

caching http response request

88
推荐指数
5
解决办法
5万
查看次数

是否可以阻止NSURLRequest缓存数据或在请求后删除缓存数据?

在iPhone上,我使用NSURLRequest对一大块数据执行HTTP请求.对象分配峰值,我相应地分配数据.当我完成数据后,我会相应地释放它 - 但是仪器没有显示任何已释放的数据!

我的理论是,默认情况下,HTTP请求被缓存,但我不希望我的iPhone应用程序缓存这些数据.

有没有办法在请求后清除此缓存或阻止任何数据首先被缓存?

我尝试过使用下面记录的所有缓存策略:

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
theRequest.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
Run Code Online (Sandbox Code Playgroud)

但似乎没有什么可以释放记忆!

cocoa-touch caching

87
推荐指数
5
解决办法
6万
查看次数

在PHP中,如何清除WSDL缓存?

php_info()保存WSDL缓存的地方(/tmp),但我不一定知道从WSDL开始删除所有文件是否安全.

是的,我应该能够删除所有内容/tmp,但我不知道如果删除任何所有WSDL文件,这会产生什么影响.

php soap wsdl caching

85
推荐指数
5
解决办法
13万
查看次数

何时以及如何使用hibernate二级缓存?

我很难理解hibernate何时命中二级缓存以及何时使缓存无效.

这就是我目前所理解的:

  • 二级缓存在会话之间存储实体,范围是SessionFactory
  • 您必须告诉哪些实体要缓存,默认情况下不会缓存任何实体
  • 查询缓存将查询结果存储在缓存中.

我不明白的是

  • 什么时候hibernate命中这个缓存?
  • 假设我已经设置了二级缓存,但没有设置查询缓存.我想缓存我的客户,其中有50000个.我可以通过哪些方式从缓存中检索客户?
  • 我假设我可以通过缓存中的id获取它们.这很容易但也不值得缓存.但是,如果我想与所有客户进行一些计算,该怎么办?假设我想显示一个客户列表,然后我将如何访问它们?
  • 如果禁用查询缓存,我将如何获得所有客户?
  • 如果有人更新了其中一个客户,会发生什么?
    • 该客户是否会在缓存中失效或所有客户都会失效?

或者我认为缓存完全错误?在这种情况下,哪种更适合使用二级缓存?hibernate文档根本不清楚缓存如何在现实中工作.只有如何设置它的说明.

更新: 所以我已经明白二级缓存(没有查询缓存)对于按ID加载数据会很好.例如,我有用户对象,我想检查Web应用程序中每个请求的权限.通过在二级缓存中缓存用户来减少数据库访问是否是一个好例子?就像我将用户ID存储在会话中或我需要检查权限的任何地方,我会通过它的id加载用户并检查权限.

java caching hibernate second-level-cache

85
推荐指数
3
解决办法
5万
查看次数

从ASP.NET禁用所有浏览器的浏览器缓存

我正在明确提到禁用浏览器缓存页面所需的ASP.NET代码.有很多方法可以影响HTTP标头和元标记,我得到的印象是需要不同的设置才能使不同的浏览器正常运行.获得一个评论的参考位以表明哪些适用于所有浏览器以及哪些适用于特定浏览器(包括版本)是非常好的.

关于这个问题有大量的信息,但我还没有找到一个很好的参考资料来描述每种方法的好处,以及某种技术是否已被更高级别的API取代.

我对ASP.NET 3.5 SP1特别感兴趣,但同样可以获得早期版本的答案.

此博客文章Firefox和IE缓存之间的两个重要差异描述了一些HTTP协议行为差异.

以下示例代码说明了我感兴趣的内容

public abstract class NoCacheBasePage : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        DisableClientCaching();
    }

    private void DisableClientCaching()
    {
        // Do any of these result in META tags e.g. <META HTTP-EQUIV="Expire" CONTENT="-1">
        // HTTP Headers or both?

        // Does this only work for IE?
        Response.Cache.SetCacheability(HttpCacheability.NoCache);

        // Is this required for FireFox? Would be good to do this without magic strings.
        // Won't it overwrite the previous setting
        Response.Headers.Add("Cache-Control", "no-cache, no-store"); …
Run Code Online (Sandbox Code Playgroud)

browser asp.net caching http

84
推荐指数
2
解决办法
11万
查看次数

MemoryCache在配置中不遵守内存限制

我正在使用应用程序中的.NET 4.0 MemoryCache类并尝试限制最大缓存大小,但在我的测试中,似乎缓存实际上并未遵守限制.

我使用的设置,根据MSDN,应该限制缓存大小:

  1. CacheMemoryLimitMegabytes:对象实例可以增长到的最大内存大小(以兆字节为单位)."
  2. PhysicalMemoryLimitPercentage: "缓存可以使用的物理内存百分比,表示为1到100之间的整数值.默认值为零,表示 MemoryCache实例根据安装在内存中的内存量管理自己的内存 1电脑." 1.这不完全正确 - 忽略任何低于4的值并替换为4.

我理解这些值是近似值而不是硬限制,因为清除缓存的线程每隔x秒触发一次,并且还取决于轮询间隔和其他未记录的变量.然而,即使考虑到这些差异,在将测试应用程序中的CacheMemoryLimitMegabytesPhysicalMemoryLimitPercentage一起或单独设置后,当第一项从缓存中逐出时,我看到了非常不一致的缓存大小.为了确保我每次测试10次并计算出平均值.

这些是在具有3GB RAM的32位Windows 7 PC上测试以下示例代码的结果.在每次测试第一次调用CacheItemRemoved()之后获取缓存的大小.(我知道缓存的实际大小将大于此)

MemLimitMB    MemLimitPct     AVG Cache MB on first expiry    
   1            NA              84
   2            NA              84
   3            NA              84
   6            NA              84
  NA             1              84
  NA             4              84
  NA            10              84
  10            20              81
  10            30              81
  10            39              82
  10            40              79
  10            49              146
  10            50              152
  10            60 …
Run Code Online (Sandbox Code Playgroud)

.net c# caching memorycache

84
推荐指数
3
解决办法
3万
查看次数

Spring Cache @Cacheable - 从同一个bean的另一个方法调用时不工作

从同一个bean的另一个方法调用缓存方法时,Spring缓存不起作用.

这是一个以清晰的方式解释我的问题的例子.

组态:

<cache:annotation-driven cache-manager="myCacheManager" />

<bean id="myCacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
    <property name="cacheManager" ref="myCache" />
</bean>

<!-- Ehcache library setup -->
<bean id="myCache"
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:shared="true">
    <property name="configLocation" value="classpath:ehcache.xml"></property>
</bean>

<cache name="employeeData" maxElementsInMemory="100"/>  
Run Code Online (Sandbox Code Playgroud)

缓存服务:

@Named("aService")
public class AService {

    @Cacheable("employeeData")
    public List<EmployeeData> getEmployeeData(Date date){
    ..println("Cache is not being used");
    ...
    }

    public List<EmployeeEnrichedData> getEmployeeEnrichedData(Date date){
        List<EmployeeData> employeeData = getEmployeeData(date);
        ...
    }

}
Run Code Online (Sandbox Code Playgroud)

结果:

aService.getEmployeeData(someDate);
output: Cache is not being used
aService.getEmployeeData(someDate); 
output: 
aService.getEmployeeEnrichedData(someDate); 
output: Cache is not being used
Run Code Online (Sandbox Code Playgroud)

getEmployeeData方法调用使用缓存employeeData …

java spring caching ehcache

83
推荐指数
6
解决办法
6万
查看次数