Начиная с .NET 4.0 вы можете использовать ExpressionVisitor
, чтобы найти свойства:
class ExprVisitor : ExpressionVisitor {
public bool IsFound { get; private set; }
public string MemberName { get; private set; }
public Type MemberType { get; private set; }
protected override Expression VisitMember(MemberExpression node) {
if (!IsFound && node.Member.MemberType == MemberTypes.Property) {
IsFound = true;
MemberName = node.Member.Name;
MemberType = node.Type;
}
return base.VisitMember(node);
}
}
Вот как вы используете этого посетителя:
var visitor = new ExprVisitor();
visitor.Visit(expr);
if (visitor.IsFound) {
Console.WriteLine("First property in the expression tree: Name={0}, Type={1}", visitor.MemberName, visitor.MemberType.FullName);
} else {
Console.WriteLine("No properties found.");
}
Если Причина, по которой мы хотим предотвратить кэширование, состоит в том, чтобы гарантировать, что более новая версия файлов загружается, когда мы делаем новую версию. , вы хотите, чтобы новая js загружалась, когда ЕСТЬ НОВАЯ версия не всегда.
Для этого вы хотите, чтобы значение "ts" было связано с файлом, а не со временем дня. Вы можете использовать одну из этих систем:
Таким образом, браузер будет перезагружать файл, только если он новый и не всегда.
В целях отладки установите панель инструментов веб-разработчика для FireFox и активируйте там «деактивировать кэш»
Обновление:
Когда у вас есть Установив FireBug, вы можете отключить кэширование, а также в настройках вкладки сети .
Если вы можете включить Java Servlet Filter в свое приложение, вот рабочее решение: CorrectBrowserCacheHandlerFilter.java
По сути, когда ваш браузер запрашивает статические файлы, сервер будет перенаправлять все запросы к тому же, но с параметром запроса хеша (например, ?v=azErT
), который зависит от содержимого целевого статического файла.
При этом браузер никогда не будет кешировать статические файлы, объявленные, например, в вашем index.html
(потому что всегда будет получать 302 Moved Temporarily
), но будет только кешировать файлы с хеш-версией (сервер ответит 200
] для них). Таким образом, кэш браузера будет эффективно использоваться для тех статических файлов с хэш-версией.
Отказ от ответственности: я автор CorrectBrowserCacheHandlerFilter.java
.