blob: dd224a58ab2d1bdf81b39e6e3e1222d1f8083f4f [file] [log] [blame]
// Copyright 2011 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Author: abliss@google.com (Adam Bliss)
// Protobuf to encapsulate custom metadata about a resource (not including real
// HTTP Headers).
syntax = "proto2";
package net_instaweb;
// Info about the input resource that was used to create a CachedResult.
// Next free tag: 10.
message InputInfo {
// Generally, URLs of inputs are not kept in the protobufs, only the indices.
// The intended usage is the URLs of inputs will be used to construct
// the key to a cache entry, and the cache value will be an
// encoded OutputPartitions.
//
// One caveat to this is that in case of a file-loaded input we store its
// filename. This is because it's otherwise too hard to determine the name
// when we need to do cache validation of things like nested
// rewrites, and to keep this information accurate across caching
// of such inner jobs.
optional int32 index = 1;
// This type affects how we check that CachedResults are up-to-date.
enum Type {
// Cached resources are valid until the expiration_time_ms.
CACHED = 1;
// File based resources are valid as long as the file has not changed.
// We stat the file and compare it's mtime to last_modified_time_ms
// to decide if the file has changed or not.
FILE_BASED = 2;
// E.g. data: URL resources never expire or change.
ALWAYS_VALID = 3;
}
required Type type = 2;
// An identifying timestamp which can be used to decide if a resource has
// been updated or not. For web-based resources, we use Last-Modified headers.
// For file-based resources, we use mtime.
optional int64 last_modified_time_ms = 3;
// For CACHED resources, keeps track of when the input expires, as taken
// from the headers returned when it was fetched.
optional int64 expiration_time_ms = 4;
// For FILE_BASED resources, the file this was loaded from.
optional string filename = 5;
// For CACHED resources, we keep track of the original fetch time so we
// can freshen.
optional int64 date_ms = 6;
// For CACHED and FILE_BASED resources, we store a hash of the input, so
// that we can reuse optimization results if it did not change, even if it
// has expired from the HTTP cache.
optional string input_content_hash = 7;
// If true, no later filters should process the same input.
optional bool disable_further_processing = 8;
// To support invalidation by exact URL, we keep the URL in the metadata.
// This bloats the size a bit, but enables fast invalidation. Compressing
// the metadata cache helps.
optional string url = 9;
}